home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the 3D Game Programming Gurus / gurus.iso / DirectX / dx9sdkcp.exe / SDK (C++) / Samples / Media / water.fx < prev    next >
Encoding:
Text File  |  2002-11-12  |  8.1 KB  |  409 lines

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