Layer shader 的筆記!

各位可在這裡交流有關RenderMan的問題和分享制作經驗

文章ChildPark » 4日 9月 2005年, 23:49

合成的結果是︰
附加檔案
muiltlayer2.jpg
muiltlayer2.jpg (17.05 KiB) 被瀏覽 9843 次
ChildPark
CGV討論區會員
CGV討論區會員
 
文章: 316
註冊時間: 2日 6月 2002年, 12:03
來自: Hong Kong

Share On:

Share on Facebook Facebook Share on Twitter Twitter

文章ChildPark » 4日 9月 2005年, 23:50

因為今次不用將ss2和tt2,2個區域雙乘的做法。
ChildPark
CGV討論區會員
CGV討論區會員
 
文章: 316
註冊時間: 2日 6月 2002年, 12:03
來自: Hong Kong

文章ChildPark » 4日 9月 2005年, 23:50

從以上的模式便可做第Layer3的smoothstep了︰
/* Layer 3 color */
float ss3 = smoothstep(0.4-fuzz, 0.4+fuzz, s) - smoothstep(0.6, 0.6+fuzz, s);
float tt3 = smoothstep(0.4-fuzz, 0.4+fuzz, t) - smoothstep(0.6, 0.6+fuzz, t);
float comp3 = ss3+tt3;
color layer3 = mix(layer2, col2, comp3);
附加檔案
muiltlayer3.jpg
muiltlayer3.jpg (21.69 KiB) 被瀏覽 9839 次
ChildPark
CGV討論區會員
CGV討論區會員
 
文章: 316
註冊時間: 2日 6月 2002年, 12:03
來自: Hong Kong

文章ChildPark » 4日 9月 2005年, 23:51

從以上的模式便可做第Layer4的smoothstep了也是最後結果︰
/* Layer 4 color */
float ss4 = smoothstep(0.6-fuzz, 0.6+fuzz, s) - smoothstep(0.8, 0.8+fuzz, s);
float tt4 = smoothstep(0.6-fuzz, 0.6+fuzz, t) - smoothstep(0.8, 0.8+fuzz, t);
float comp4 = ss4+tt4;
color final = mix(layer3, col3, comp4);
附加檔案
muiltlayer4.jpg
muiltlayer4.jpg (24.75 KiB) 被瀏覽 9837 次
ChildPark
CGV討論區會員
CGV討論區會員
 
文章: 316
註冊時間: 2日 6月 2002年, 12:03
來自: Hong Kong

文章ChildPark » 4日 9月 2005年, 23:51

還可將黑色區域作透明處理。
surface ri_mulitlayer(
float Ka = 1,
Kd = 0.5;
color col = color(1,1,1);
color col1 = color(1,0,0);
color col2 = color(0,1,0);
color col3 = color(0,0,1);
color bg = color(0,0,0);
)
{
float fuzz = 0.005;
normal Nf = faceforward(normalize(N), I);

/* Layer 1 color */
float ss1 = smoothstep(0-fuzz, 0+fuzz, s) - smoothstep(0.2, 0.2+fuzz, s);
float tt1 = smoothstep(0-fuzz, 0+fuzz, t) - smoothstep(0.2, 0.2+fuzz, t);
float comp1 = ss1*tt1;
color layer1 = mix(bg, col, comp1);

/* Layer 2 color */
float ss2 = smoothstep(0.2-fuzz, 0.2+fuzz, s) - smoothstep(0.4, 0.4+fuzz, s);
float tt2 = smoothstep(0.2-fuzz, 0.2+fuzz, t) - smoothstep(0.4, 0.4+fuzz, t);
float comp2 = ss2+tt2;
color layer2 = mix(layer1, col1, comp2);

/* Layer 3 color */
float ss3 = smoothstep(0.4-fuzz, 0.4+fuzz, s) - smoothstep(0.6, 0.6+fuzz, s);
float tt3 = smoothstep(0.4-fuzz, 0.4+fuzz, t) - smoothstep(0.6, 0.6+fuzz, t);
float comp3 = ss3+tt3;
color layer3 = mix(layer2, col2, comp3);

/* Layer 4 color */
float ss4 = smoothstep(0.6-fuzz, 0.6+fuzz, s) - smoothstep(0.8, 0.8+fuzz, s);
float tt4 = smoothstep(0.6-fuzz, 0.6+fuzz, t) - smoothstep(0.8, 0.8+fuzz, t);
float comp4 = ss4+tt4;
color layer4 = mix(layer3, col3, comp4);

float comp5 = comp1+comp2+comp3+comp4;

if(comp5 < 0.5){
comp5 = 0;
}else{
comp5 = 1;
}

Oi = comp5;
Ci = Oi * layer4 * (Ka * ambient() + Kd * diffuse(Nf));
}
ChildPark
CGV討論區會員
CGV討論區會員
 
文章: 316
註冊時間: 2日 6月 2002年, 12:03
來自: Hong Kong

上一頁

回到 Pixar's RenderMan

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 6 位訪客