home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Game Programming for Teens / VBGPFT.cdr / DirectX8 / dx8a_sdk.exe / samples / multimedia / media / water.sha < prev    next >
Encoding:
Text File  |  2000-09-22  |  7.9 KB  |  408 lines

  1. //
  2. // Water effect
  3. // Copyright (c) 2000 Microsoft Corporation. All rights reserved.
  4. //
  5.  
  6. matrix mID;     // Identity transform
  7. matrix mENV;    // Environment map transform
  8.  
  9. texture tFLR;   // Floor texture
  10. texture tCAU;   // Caustic texture
  11. texture tENV;   // Cubic environment map
  12.  
  13. vertexshader vs = 
  14.    decl { fvf xyz | normal | diffuse | tex1; }; 
  15.  
  16.     
  17.  
  18.         
  19.  
  20.  
  21. //
  22. // Technique 0 - One pass
  23. //
  24.  
  25. technique T0
  26. {
  27.     vertexshader = <vs>;
  28.  
  29.     pass P0
  30.     {        
  31.         Lighting       = True;
  32.         SpecularEnable = True;
  33.  
  34.  
  35.         // Stage0
  36.         ColorOp[0]   = SelectArg1;
  37.         ColorArg1[0] = Texture;
  38.         AlphaOp[0]   = SelectArg2;
  39.         AlphaArg2[0] = Current;
  40.  
  41.         MinFilter[0] = Linear;
  42.         MagFilter[0] = Linear;
  43.         MipFilter[0] = Point;
  44.  
  45.         Texture[0] = <tFLR>;
  46.         TextureTransform[0] = <mID>;
  47.         TextureTransformFlags[0] = Count2;
  48.  
  49.  
  50.         // Stage1
  51.         ColorOp[1]   = Add;
  52.         ColorArg1[1] = Texture;
  53.         ColorArg2[1] = Current;
  54.         AlphaOp[1]   = SelectArg2;
  55.         AlphaArg2[1] = Current;
  56.  
  57.         MinFilter[1] = Linear;
  58.         MagFilter[1] = Linear;
  59.         MipFilter[1] = Point;
  60.  
  61.         Texture[1] = <tCAU>;
  62.         TextureTransform[1] = <mID>;
  63.         TextureTransformFlags[1] = Count2;
  64.  
  65.  
  66.         // Stage2
  67.         ColorOp[2]   = BlendCurrentAlpha;
  68.         ColorArg1[2] = Texture;
  69.         ColorArg2[2] = Current;
  70.         AlphaOp[2]   = Disable;
  71.  
  72.         MinFilter[2] = Linear;
  73.         MagFilter[2] = Linear;
  74.         MipFilter[2] = Point;
  75.  
  76.         Texture[2] = <tENV>;
  77.         TextureTransform[2] = <mENV>;
  78.         TextureTransformFlags[2] = Count3;
  79.         TexCoordIndex[2] = CameraSpaceReflectionVector;
  80.  
  81.         // Stage3
  82.         ColorOp[3] = Disable;
  83.         AlphaOp[3] = Disable;
  84.     }
  85. }
  86.  
  87.  
  88. //
  89. // Technique 1 - Two pass
  90. //
  91.  
  92. technique T1
  93. {
  94.     vertexshader = <vs>;
  95.  
  96.     pass P0
  97.     {       
  98.         // Stage0
  99.         ColorOp[0]   = SelectArg1;
  100.         ColorArg1[0] = Texture;
  101.         AlphaOp[0]   = Disable;
  102.  
  103.         MinFilter[0] = Linear;
  104.         MagFilter[0] = Linear;
  105.         MipFilter[0] = Point;
  106.  
  107.         Texture[0] = <tFLR>;
  108.         TextureTransform[0] = <mID>;
  109.         TextureTransformFlags[0] = Count2;
  110.  
  111.  
  112.         // Stage1
  113.         ColorOp[1]   = Add;
  114.         ColorArg1[1] = Texture;
  115.         ColorArg2[1] = Current;
  116.         AlphaOp[1]   = Disable;
  117.  
  118.         MinFilter[1] = Linear;
  119.         MagFilter[1] = Linear;
  120.         MipFilter[1] = Point;
  121.  
  122.         Texture[1] = <tCAU>;
  123.         TextureTransform[1] = <mID>;
  124.         TextureTransformFlags[1] = Count2;
  125.  
  126.  
  127.         // Stage2
  128.         ColorOp[2] = Disable;
  129.         AlphaOp[2] = Disable;
  130.     }
  131.  
  132.  
  133.     pass P1
  134.     {
  135.         SrcBlend  = One;
  136.         DestBlend = InvSrcAlpha;
  137.  
  138.         Lighting         = True;
  139.         SpecularEnable   = True;
  140.         AlphaBlendEnable = True;
  141.  
  142.  
  143.         // Stage0
  144.         ColorOp[0]   = BlendDiffuseAlpha;
  145.         ColorArg1[0] = Texture;
  146.         ColorArg2[0] = Diffuse;
  147.         AlphaOp[0]   = SelectArg2;
  148.         AlphaArg2[0] = Diffuse;
  149.  
  150.         MinFilter[0] = Linear;
  151.         MagFilter[0] = Linear;
  152.         MipFilter[0] = Point;
  153.  
  154.         Texture[0] = <tENV>;
  155.         TextureTransform[0] = <mENV>;
  156.         TextureTransformFlags[0] = Count3;
  157.         TexCoordIndex[0] = CameraSpaceReflectionVector;
  158.  
  159.  
  160.         // Stage1
  161.         ColorOp[1] = Disable;
  162.         AlphaOp[1] = Disable;
  163.     }
  164. }
  165.  
  166.  
  167. //
  168. // Technique 2 - Three pass
  169. //
  170.  
  171. technique T2
  172. {
  173.     vertexshader = <vs>;
  174.  
  175.     pass P0
  176.     {
  177.         // Stage0
  178.         ColorOp[0]   = SelectArg1;
  179.         ColorArg1[0] = Texture;
  180.         AlphaOp[0]   = Disable;
  181.  
  182.         MinFilter[0] = Linear;
  183.         MagFilter[0] = Linear;
  184.         MipFilter[0] = Point;
  185.  
  186.         Texture[0] = <tFLR>;
  187.         TextureTransform[0] = <mID>;
  188.         TextureTransformFlags[0] = Count2;
  189.  
  190.         // Stage1
  191.         ColorOp[1] = Disable;
  192.         AlphaOp[1] = Disable;
  193.     }
  194.  
  195.  
  196.     pass P1
  197.     {
  198.         SrcBlend  = One;
  199.         DestBlend = One;
  200.  
  201.         Lighting         = False;
  202.         SpecularEnable   = True;
  203.         AlphaBlendEnable = True;
  204.  
  205.  
  206.         // Stage0
  207.         ColorOp[0]   = Add;
  208.         ColorArg1[0] = Texture;
  209.         ColorArg2[0] = Current;
  210.         AlphaOp[0]   = Disable;
  211.  
  212.         MinFilter[0] = Linear;
  213.         MagFilter[0] = Linear;
  214.         MipFilter[0] = Point;
  215.  
  216.         Texture[0] = <tCAU>;
  217.         TextureTransform[0] = <mID>;
  218.         TextureTransformFlags[0] = Count2;
  219.  
  220.  
  221.         // Stage1
  222.         ColorOp[1] = Disable;
  223.         AlphaOp[1] = Disable;
  224.     }
  225.  
  226.  
  227.     pass P2
  228.     {
  229.         SrcBlend  = One;
  230.         DestBlend = InvSrcAlpha;
  231.  
  232.         Lighting         = True;
  233.         SpecularEnable   = True;
  234.         AlphaBlendEnable = True;
  235.  
  236.  
  237.         // Stage0
  238.         ColorOp[0]   = BlendDiffuseAlpha;
  239.         ColorArg1[0] = Texture;
  240.         ColorArg2[0] = Diffuse;
  241.         AlphaOp[0]   = SelectArg2;
  242.         AlphaArg2[0] = Diffuse;
  243.  
  244.         MinFilter[0] = Linear;
  245.         MagFilter[0] = Linear;
  246.         MipFilter[0] = Point;
  247.  
  248.         Texture[0] = <tENV>;
  249.         TextureTransform[0] = <mENV>;
  250.         TextureTransformFlags[0] = Count3;
  251.         TexCoordIndex[0] = CameraSpaceReflectionVector;
  252.  
  253.  
  254.         // Stage1
  255.         ColorOp[1] = Disable;
  256.         AlphaOp[1] = Disable;
  257.     }
  258. }
  259.  
  260.  
  261. //
  262. // Technique 3 - One pass, no reflection
  263. //
  264.  
  265. technique T3
  266. {
  267.     vertexshader = <vs>;
  268.  
  269.     pass P0
  270.     {
  271.         Lighting       = True;
  272.         SpecularEnable = True;
  273.  
  274.  
  275.         // Stage0
  276.         ColorOp[0]   = SelectArg1;
  277.         ColorArg1[0] = Texture;
  278.         AlphaOp[0]   = Disable;
  279.  
  280.         MinFilter[0] = Linear;
  281.         MagFilter[0] = Linear;
  282.         MipFilter[0] = Point;
  283.  
  284.         Texture[0]   = <tFLR>;
  285.  
  286.  
  287.         // Stage1
  288.         ColorOp[1]   = Add;
  289.         ColorArg1[1] = Texture;
  290.         ColorArg2[1] = Current;
  291.         AlphaOp[1]   = Disable;
  292.  
  293.         MinFilter[1] = Linear;
  294.         MagFilter[1] = Linear;
  295.         MipFilter[1] = Point;
  296.  
  297.         Texture[1]   = <tCAU>;
  298.  
  299.  
  300.         // Stage2
  301.         ColorOp[2]   = Disable;
  302.         AlphaOp[2]   = Disable;
  303.     }
  304. }
  305.  
  306.  
  307. //
  308. // Technique 4 - Two pass, no reflection
  309. //
  310.  
  311. technique T4
  312. {
  313.     vertexshader = <vs>;
  314.  
  315.     pass P0
  316.     {
  317.         // Stage 0
  318.         ColorOp[0]   = SelectArg1;
  319.         ColorArg1[0] = Texture;
  320.         ColorArg2[0] = Diffuse;
  321.  
  322.         AlphaOp[0]   = SelectArg1;
  323.         AlphaArg1[0] = Texture;
  324.         AlphaArg2[0] = Diffuse;
  325.  
  326.         MinFilter[0] = Linear;
  327.         MagFilter[0] = Linear;
  328.         MipFilter[0] = Point;
  329.  
  330.         Texture[0]   = <tFLR>;
  331.  
  332.  
  333.         // Stage 1
  334.         ColorOp[1]   = Disable;
  335.         AlphaOp[1]   = Disable;
  336.     }
  337.  
  338.  
  339.     pass P1
  340.     {
  341.         SrcBlend  = One;
  342.         DestBlend = One;
  343.  
  344.         Lighting         = True;
  345.         SpecularEnable   = True;
  346.         AlphaBlendEnable = True;
  347.  
  348.  
  349.         // Stage 0
  350.         ColorOp[0]   = SelectArg1;
  351.         ColorArg1[0] = Texture;
  352.         ColorArg2[0] = Current;
  353.  
  354.         AlphaOp[0]   = SelectArg1;
  355.         AlphaArg1[0] = Texture;
  356.         AlphaArg2[0] = Current;
  357.  
  358.         MinFilter[0] = Linear;
  359.         MagFilter[0] = Linear;
  360.         MipFilter[0] = Point;
  361.  
  362.         Texture[0]   = <tCAU>;
  363.  
  364.  
  365.         // Stage 1
  366.         ColorOp[1]   = Disable;
  367.         AlphaOp[1]   = Disable;
  368.     }
  369. }
  370.  
  371.  
  372.  
  373.  
  374. //
  375. // Technique 5 - One pass, no reflection, no caustics
  376. //
  377.  
  378. technique T5
  379. {
  380.     vertexshader = <vs>;
  381.  
  382.     pass P0
  383.     {
  384.         Lighting       = True;
  385.         SpecularEnable = True;
  386.  
  387.  
  388.         // Stage 0
  389.         ColorOp[0]   = SelectArg1;
  390.         ColorArg1[0] = Texture;
  391.         ColorArg2[0] = Current;
  392.  
  393.         AlphaOp[0]   = SelectArg1;
  394.         AlphaArg1[0] = Texture;
  395.         AlphaArg2[0] = Current;
  396.  
  397.         MinFilter[0] = Linear;
  398.         MagFilter[0] = Linear;
  399.         MipFilter[0] = None;
  400.  
  401.         Texture[0]   = <tFLR>;
  402.  
  403.         // Stage 1
  404.         ColorOp[1]   = Disable;
  405.         AlphaOp[1]   = Disable;
  406.     }
  407. }
  408.