Posted 16 December 2008 - 07:46 AM
Posted 16 December 2008 - 08:42 AM
geneome, on Dec 16 2008, 07:46 AM, said:
Posted 16 December 2008 - 09:21 AM
Jason, on Dec 16 2008, 11:42 AM, said:
Posted 16 December 2008 - 12:28 PM
surface
sssLightID(
// DECLARE PARAMETERS
#pragma annotation "grouping" "overall/overall_color;"
#pragma annotation "grouping" "overall/overall_intensity;"
color overall_color = 1;
float overall_intensity = 1;
#pragma annotation "grouping" "key/keyColor;"
#pragma annotation "grouping" "key/key_intensity;"
color keyColor = 1;
float key_intensity = 1;
#pragma annotation "grouping" "kick/kickColor;"
#pragma annotation "grouping" "kick/kick_intensity;"
color kickColor = 1;
float kick_intensity = 1;
#pragma annotation "grouping" "fill/fillColor;"
#pragma annotation "grouping" "fill/fill_intensity;"
color fillColor = 1;
float fill_intensity = 1;
// DECLARE OUTPUTS
output varying color aov_sssLightID= 0;
output varying color aov_sssLight_key= 0;
output varying color aov_sssLight_kick= 0;
output varying color aov_sssLight_fill= 0;)
{
float luminance(color input_color){
return
0.3 * comp(input_color, 0) +
0.59 * comp(input_color, 1) +
0.11 * comp(input_color, 2);
}
uniform string raytype = "unknown";
rayinfo("type", raytype);
normal Nn = normalize(N);
color keyLight = 0;
color kickLight = 0;
color fillLight = 0;
uniform string category = "";
// SEND TO SUBSURFACE EACH LIGHT CATEGORY SEPERATELY
if(raytype == "subsurface"){
illuminance(P, Nn, PI/2){
vector Ln = normalize(L);
float lightContrib = Nn.Ln * luminance(Cl);
lightsource("__category", category);
if (category == "key,specular,diffuse" || category == "key")
setcomp(Ci, 0, lightContrib * key_intensity);
else if (category == "kick,specular,diffuse" || category == "kick")
setcomp(Ci, 1, lightContrib * kick_intensity);
else if (category == "fill,specular,diffuse" || category == "fill")
setcomp(Ci, 2, lightContrib * fill_intensity);
}
Ci *= overall_color * overall_intensity;
}
// GET COLOR FROM EACH LIGHT CATEGORY SEPERATELY
else{
// RETURN FROM SUBSURFACE EACH LIGHT CATEGORY SEPERATELY
color sssReturn = subsurface(P);
aov_sssLightID = color(sssReturn[0], sssReturn[1], sssReturn[2]);
aov_sssLight_key = color(sssReturn[0]) * keyColor;
aov_sssLight_kick = color(sssReturn[1]) * kickColor;
aov_sssLight_fill = color(sssReturn[2]) * fillColor;
Ci = aov_sssLight_key + aov_sssLight_kick + aov_sssLight_fill;
}
}
Posted 17 December 2008 - 04:44 AM
Quote
surface
diffuse_export( export vector diff = 0 )
{
vector total_diff = 0;
vector Nn = normalize(N);
illuminance(P, Nn, 1.570796 , "lightexport", "diff")
{
diff = 0;
shadow(Cl);
diff = Cl * diffuseBRDF(L, Nn);
total_diff += diff;
}
Cf = total_diff;
}
This post has been edited by Wolfwood: 17 December 2008 - 04:44 AM
Posted 17 December 2008 - 07:21 PM
This post has been edited by geneome: 17 December 2008 - 07:22 PM
Posted 18 December 2008 - 02:52 PM
kensonuken, on Dec 18 2008, 11:31 AM, said:
Posted 18 December 2008 - 06:34 PM
This post has been edited by kensonuken: 18 December 2008 - 06:37 PM