1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Мечта жизни!

Тема в разделе "RenderMan", создана пользователем -, 13 июн 2002.

Модераторы: Moderator.
  1. Guest

    Мечта жизни у мен простая.. может затупил или что то типа того...
    но вот мне очень хочеться поотключать спекуляры у света...
    помогите кто чем может..

    Ой
    тоесть мне просто интересно можно ли это сделать через Свежий РАТ5 как еибудь дефаултно...

    P.S. т.к похерил темплейт который это делал..
    P.S_2 нетрвы....
    P.S_3 если по новой с ним копаться то вырву сердце у компа..
     
  2. Guest

    /*
    ** A modified spot shader to take into account the __nonspecular and __nondiffuse
    ** By Alex Ongaro
    ** alex.ongaro@swissonline.ch
    **
    **
    ** ----------------------------------------------------------------------------
    */

    light AO_RatSpot (
    color Light_Color = color(1,1,1);
    float Kl=1;
    float ConeAngle=30;
    float PenumbraAngle=5;
    float Non_Specular=0, Non_Diffuse=0;
    output varying float __inShadow=0;
    output varying float __nonspecular=0;
    output varying float __nondiffuse=0;
    )
    {
    #ifdef BMRT
    point from = P;
    vector axis = normalize(N);
    #else
    point from = point "shader"(0,0,0);
    vector axis = normalize(vector "shader"(0,0,1));
    #endif
    uniform float angle = radians(ConeAngle);
    uniform float penumbra = radians(PenumbraAngle);
    uniform float cosoutside = cos(angle);
    uniform float cosinside = cos(angle-penumbra);

    __nonspecular = Non_Specular;
    __nondiffuse = Non_Diffuse;
    color ColorL = Light_Color;

    illuminate(from, axis, angle) {
    varying float atten, cosangle;
    cosangle = L.axis / length(L);
    atten = smoothstep( cosoutside, cosinside, cosangle );
    atten *= 1 / pow(length(L), 0);
    Cl = atten * Kl * ColorL;
    Cl = mix(Cl,color(0,0,0), __inShadow);
    }
    }
     
  3. Guest

    МЕга спасибо...
    эх.. и что они не сделают это по девулту то :(
     
  4. Guest

    Ну я думаю, что если найти в родных темплейтах описание SpotLight и добавить туда пару нужных строчек, то так и будет.
    При желании, можно попробовать и mtorSpotLight переписать.
    Видимо, не всем эта фича нужна по дефолту.
     
  5. Guest

    Спасибо...
    вообщем... я думаю займусь копанием темплейта.. этак на выходных..
     
  6. Guest

    Добавь вот параметры в template light Spot:

    parameter float Specular {
    description "Emmit Specular"
    subtype switch
    default 1
    detail uniform
    }
    parameter float Diffuse {
    description "Emmit Diffuse"
    subtype switch
    default 1
    detail uniform
    }
    parameter float __nonspecular {
    access output
    display hidden
    detail varying
    provider variable
    default 0
    }
    parameter float __nondiffuse {
    access output
    display hidden
    detail varying
    provider variable
    default 0
    }
    И в RSLMain, где-то ПЕРЕД illuminate(from, axis, angle) :
    output "__nonspecular = 1 - [getvar Specular];"
    output "__nondiffuse = 1 - [getvar Diffuse];"

    Наслаждайся...
     
  7. Guest

    Спасибо!
     
  8. Guest

    Можно даже еще проще: ratUberlight.slo, который лежит вместе со всеми остальными стандартными шейдерами RAT, имеет галочку nonspecular...
     
  9. Guest

    Ы!
    Классный шейдер :)))
    Спасибо!

    Спасибо что помогли!
     
Модераторы: Moderator.

Поделиться этой страницей