home *** CD-ROM | disk | FTP | other *** search
/ DarkBasic Professional / DarkBasicPro.iso / data1.cab / Lang_Files_(English) / Help / examples / basic3d / cartoon.fx < prev    next >
Encoding:
Text File  |  2004-09-22  |  1.8 KB  |  99 lines

  1. //
  2. // FX Effect file - Cartoon
  3. //
  4.  
  5. // Constants
  6. matrix wvp : WorldViewProjection;
  7. matrix world : World;
  8. matrix worldIT : WorldIT;
  9. float4 eyePos : EyePosition;
  10. float4 lhtDir < string UIDirectional = "Light Direction"; >;
  11.  
  12. // Model and Texture Names
  13. string XFile = "default.x";
  14. texture toonshade < string name = "shade.bmp"; >;
  15. texture toonedge < string name = "edge.dds"; >;
  16.  
  17. technique Toon
  18. {
  19.     pass p0
  20.     {
  21.         VertexShaderConstant[0] = <wvp>;
  22.         VertexShaderConstant[4] = <worldIT>;
  23.         VertexShaderConstant[8] = <world>;
  24.         VertexShaderConstant[12] = <eyePos>;
  25.         VertexShaderConstant[13] = <lhtDir>;
  26.  
  27.         VertexShader = 
  28.         asm
  29.         {
  30.  
  31.             // v0  -- position
  32.             // v3  -- normal
  33.  
  34.             vs.1.1
  35.  
  36.             dcl_position      v0
  37.             dcl_normal        v3
  38.  
  39.             // transform position
  40.             dp4 oPos.x, v0, c0
  41.             dp4 oPos.y, v0, c1
  42.             dp4 oPos.z, v0, c2
  43.             dp4 oPos.w, v0, c3
  44.  
  45.             // transform normal
  46.             dp3 r0.x, v3, c8
  47.             dp3 r0.y, v3, c9
  48.             dp3 r0.z, v3, c10
  49.  
  50.             // normalize normal
  51.             dp3 r0.w, r0, r0
  52.             rsq r0.w, r0.w
  53.             mul r0, r0, r0.w
  54.  
  55.             // compute world space position
  56.             dp4 r1.x, v0, c8
  57.             dp4 r1.y, v0, c9
  58.             dp4 r1.z, v0, c10
  59.             dp4 r1.w, v0, c11
  60.  
  61.             // vector from point to eye
  62.             add r2, c12, -r1
  63.  
  64.             // normalize e
  65.             dp3 r2.w, r2, r2
  66.             rsq r2.w, r2.w
  67.             mul r2, r2, r2.w
  68.  
  69.             // e dot n
  70.             dp3 oT1.x, r0, r2
  71.  
  72.             // l dot n
  73.             dp3 oT0.x, r0, -c13
  74.         };
  75.  
  76.         Texture[0] = <toonshade>;
  77.         Texture[1] = <toonedge>;
  78.  
  79.         MinFilter[0] = Linear;
  80.         MagFilter[0] = Linear;
  81.         MipFilter[0] = Linear;
  82.         MinFilter[1] = Linear;
  83.         MagFilter[1] = Linear;
  84.         MipFilter[1] = Linear;
  85.  
  86.         AddressU[0] = Clamp;
  87.         AddressV[0] = Clamp;
  88.         AddressU[1] = Clamp;
  89.         AddressV[1] = Clamp;
  90.  
  91.         ColorOp[0] = SelectArg1;
  92.         ColorArg1[0] = Texture;
  93.  
  94.         ColorOp[1] = Modulate;
  95.         ColorArg1[1] = Texture;
  96.         ColorArg2[1] = Current;
  97.     }
  98. }
  99.