Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

98 lines
2.4 KiB

!!ARBfp1.0
# This is the fragment program for two
# component dependent data with shading
# We need some temporary variables
TEMP index1, index2, normal, finalColor;
TEMP temp1, temp2, temp3;
TEMP sampleColor, sampleOpacity;
TEMP ndotl, ndoth, ndotv;
TEMP lightInfo, lightResult;
# We are going to use the first
# texture coordinate
ATTRIB tex0 = fragment.texcoord[0];
# This is the lighting information
PARAM lightDirection = program.local[0];
PARAM halfwayVector = program.local[1];
PARAM coefficient = program.local[2];
PARAM lightDiffColor = program.local[3];
PARAM lightSpecColor = program.local[4];
PARAM viewVector = program.local[5];
PARAM constants = program.local[6];
# This is our output color
OUTPUT out = result.color;
# Look up color in the first volume
TEX sampleColor, tex0, texture[0], 3D;
# Look up the fourth scalar value / gradient
# magnitude in the second volume
TEX temp1, tex0, texture[1], 3D;
# Look up the gradient direction
# in the third volume
TEX temp2, tex0, texture[2], 3D;
# This normal is stored 0 to 1, change to -1 to 1
# by multiplying by 2.0 then adding -1.0.
MAD normal, temp2, constants.x, constants.y;
# Swizzle this to use (a,r) as texture
# coordinates for opacity
SWZ index1, temp1, a, r, 1, 1;
# Use this coordinate to look up a
# final opacity in the fourth texture
TEX sampleOpacity, index1, texture[3], 2D;
# Take the dot product of the light
# direction and the normal
DP3 ndotl, normal, lightDirection;
# Take the dot product of the halfway
# vector and the normal
DP3 ndoth, normal, halfwayVector;
DP3 ndotv, normal, viewVector;
# flip if necessary for two sided lighting
MUL temp3, ndotl, constants.y;
CMP ndotl, ndotv, ndotl, temp3;
MUL temp3, ndoth, constants.y;
CMP ndoth, ndotv, ndoth, temp3;
# put the pieces together for a LIT operation
MOV lightInfo.x, ndotl.x;
MOV lightInfo.y, ndoth.x;
MOV lightInfo.w, coefficient.w;
# compute the lighting
LIT lightResult, lightInfo;
# This is the ambient contribution
MUL finalColor, coefficient.x, sampleColor;
# This is the diffuse contribution
MUL temp3, lightDiffColor, sampleColor;
MUL temp3, temp3, lightResult.y;
ADD finalColor, finalColor, temp3;
# This is th specular contribution
MUL temp3, lightSpecColor, lightResult.z;
# Add specular into result so far, and replace
# with the original alpha.
ADD out, finalColor, temp3;
MOV out.w, sampleOpacity.w;
END