home *** CD-ROM | disk | FTP | other *** search
- !!FP1.0
- # NV_fragment_program generated by NVIDIA Cg compiler
- # cgc version 1.5.0001, build date Oct 29 2002 01:02:54
- # command line args: -profile fp30
- #vendor NVIDIA Corporation
- #version 1.0.1
- #profile fp30
- #program main
- #semantic main.diffCol
- #semantic main.normalMap
- #semantic main.translucenceMap
- #semantic main.g_dappleProjection
- #semantic main.g_diffuse_Cube
- #semantic main.g_specular_Cube
- #semantic main.g_nrmalize_Cube
- #semantic main.g_hilight_Cube
- #var float4 v2f.diffCol : $vin.TEX0 : TEX0 : 0 : 1
- #var float3 v2f.worldEyeDir : $vin.TEX1 : TEX1 : 0 : 1
- #var float3 v2f.worldTanMatrixX : $vin.TEX5 : TEX5 : 0 : 1
- #var float3 v2f.worldTanMatrixY : $vin.TEX6 : TEX6 : 0 : 1
- #var float3 v2f.worldTanMatrixZ : $vin.TEX7 : TEX7 : 0 : 1
- #var float4 v2f.SkinSilouetteVec : $vin.TEX2 : TEX2 : 0 : 1
- #var sampler2D diffCol : : texunit 0 : 1 : 1
- #var sampler2D normalMap : : texunit 1 : 2 : 1
- #var sampler2D translucenceMap : : texunit 2 : 3 : 1
- #var sampler2D g_dappleProjection : : texunit 3 : 4 : 1
- #var samplerCUBE g_diffuse_Cube : : texunit 4 : 5 : 1
- #var samplerCUBE g_specular_Cube : : texunit 5 : 6 : 1
- #var samplerCUBE g_nrmalize_Cube : : texunit 6 : 7 : 1
- #var samplerCUBE g_hilight_Cube : : texunit 7 : 8 : 1
- #var half4 COL : $vout.COL : COL : -1 : 1
-
- ############################################################################################
- # Hand writeen ASM #
- ############################################################################################
- TEX H0, f[TEX0], TEX1, 2D; # store range-compressed normal in H0
- TEX H1, f[TEX1], TEX7, CUBE; # Hilight
-
- MOVH H3, f[TEX5];
- DP3X H2.x, H0, H3;
- MOVH H3, f[TEX6];
- DP3X H2.y, H0, H3;
- MOVH H3, f[TEX7];
- DP3X H2.z, H0, H3; # H2 now contains worldNormal - extinguish
-
- MOVH H0, f[TEX1]; # store v2f.world_V in H1
- DP3X H2.w, H0, H2; # H2.w = dot(Normal, View)
- MULX H2.xyz,-H2, -2; # twice the normal
- MADX H3.xyz, -H2, H2.w, H0; # H3 = -2*dot(H0, H2)*H2 + H0 = reflection vector. Normal doesn't need to be fixed, because it's uniformly scaled
-
- TEX H0, H2, TEX4, CUBE; # diffuse lighting
- TEX H2, f[TEX0], TEX2, 2D; # translucence
- MOVH o[COLH].w, H2.x;
- MULX H2.y, H2.y, 0.5; # 0.3*translTerm (combiner 1)
- MADX H0, H1, H2.y, H0; # cube_diffuse + 0.3*translTerm*hilight(combiner 2)
- #H2 now available
-
- TEX H3, H3, TEX5, CUBE; # direct specular lighting
- TEX H2, f[TEX0], TEX0, 2D; # fetch color
- MULX H0, H2, H0; # attenuate by diff color
- MULX H3, H3, 0.1; # 0.1*specular
-
- #MADX o[COLH], H3, H2.w, H0;
- MADX H3, H3, H2.w, H0;
- ADDH o[COLH], H3, H1.w;
- END
-
-
-
- ############################################################################################
- # Hand writeen ASM end #
- ############################################################################################
-
- # End of program
-