Skocz do zawartości

Sub Surface Scattering contest


SWRSC

Rekomendowane odpowiedzi

A tu moja pierwsza próba napisania shadera sss do rendermana. Wyrenderowane w nieoptymalizowanym pixie (open sourcowej implementacji rendermana)(cholera muszę sobie pixie skompilować z optymalizacją pod mój sprzęt). W każdym bądź razie rendering trwał

7min 3s

z samplami do shadera światła na poziomie 500, pewnie to nikomu nic nie mówi, powiem tylko, że przy 16 samplach trwa 5s, tylko widać ziarno. Także kolejne zadanie: podjąć próbę optymalizacji shadera :).

oto sam obrazek:

sss.jpg

obiekt oczywiście lewituje i nie ma widocznego cienia :)

 

a tu jakby ktoś był zainteresowany plik rib, z którego można wyczytać wszystkie ustawienia światła :)

 

Option "searchpath" "shader" ["/opt/Pixie/shaders:&"]
Option "searchpath" "shader" ["/home/pieter/3d:&"]
PixelSamples 2 2 
Exposure 1.3 1.3
ShadingRate 2
PixelFilter "catmull-rom" 2 2
Display "/home/pieter/3d/sss.tif" "file" "rgb"
#Display "+/home/pieter/3d//Scene1_cam_1_frame_1.tif" "framebuffer" "rgb"
Hider "hidden"
Format 640 480 1
Projection "perspective" "fov" [35]
Transform [0.685880422592 -0.317370116711 -0.654861986637 0.0 0.727633714676 0.31246855855 0.610665559769 0.0 -0.0108167920262 0.895343244076 -0.44524538517 0.0 -0.338182240725 -0.376693725586 11.2523422241 1.0]


WorldBegin
Attribute "visibility" "transmission" "Os"
LightSource "shadowspot1" 2 "intensity" 70 "from" -8.5 0 3 "to" 0 0 0 "bias" 0.1 "blur" 0.7 "samples" 512 "beamdistribution" 2 "lightcolor" 0.78 0.91 1

AttributeBegin
Attribute "identifier" "name" ["Cube"]
Attribute "displacementbound" "sphere" [2.0]
TransformBegin
Translate -2.5 3 -0.4
Surface "MHmatteNS" "Ka" 0.5 "Kd" 1 "lfact" 0.15 "Ks" 0.7 "roughness" .7
Color 1 0.79 0.6
ReadArchive "/home/pieter/3d///archives//Cube.rib"
TransformEnd
AttributeEnd


AttributeBegin
TransformBegin
Translate 0 0 -4
Surface "plastic" "Ks" 0.3
Color 1 1 1
Disk 1 10 360 
TransformEnd
AttributeEnd


WorldEnd

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 67
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Kod shader-a po modyfikacjach.

 


color mydiffuse4(normal Norm; float fact; float samples; float cone; float falloff) 
{ 
extern point P;
   color C = 0;    
   illuminance( P ) 
{
 float w = normalize(L).Norm; 
 if ( w >= 0 )
 {
     C = Cl; 
    C += (Cl * w) * fact; 
 }
 else
 {
  float d;
  color Ca;
  gather("illuminance", P, normalize(L) , cone, samples, "ray:length", d, "surface:Ci", Ca)
  {
       float atten;
   if (falloff==0)
    atten=1;
   else if (falloff==2)
    atten=1/(L.L);
   else
    atten = 1/pow(length(L),falloff);
   C += (Ca * atten);
  }

  C /= samples;
 }
}
   return C; 
} 

surface ax_sss(float Ka = 1;
 float Kd = 1; 
 float Ks = 1;
 float roughness = .1; 
 float lfact = 0.25;
 float samples = 1;
 float cone = 0.1;
 float falloff = 0;
 ) 
{
 Oi = Os;
 Ci = Os * Cs * (Ka * ambient() + Kd * mydiffuse4(normalize(N),lfact,samples,cone, falloff )) + Ks*specular(normalize(N),-normalize(I),roughness);

}

 

A tak oftopowo to przy okazji zabawy z Renderman-em zrobilem sobie plugin ktory wczytuje mi obiekty z plikow 3DS.

 

Duzo zabawy i kombinowania z tym Renderman-em a efekty takie sobie ;), dodatkowo w filmach coraz wiecej Mental-a sie uzywa.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności