А вотя мой шейдер воды

//КОД ШЕЙДЕРА
static float4 Colorka : COLOR0;
const float UPSTimer;
texture diffuseTexture : TEXTURE_0;
texture diffuseTexture1 : TEXTURE_1;
float3 PosCamera;
sampler diffuseSampler = sampler_state
{
Texture = <diffuseTexture>;
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
MaxAnisotropy = 4;
};
sampler diffuseSampler1 = sampler_state
{
Texture = <diffuseTexture1>;
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
MaxAnisotropy = 4;
};
struct PSInput
{
float2 texCoords : TEXCOORD0;
};
struct PSOutput
{
float4 color : COLOR;
};
PSOutput PSMain (PSInput input)
{
PSOutput output;
Colorka =(tex2D(diffuseSampler, input.texCoords+float2(0,UPSTimer))+tex2D(diffuseSampler1, input.texCoords-float2(UPSTimer,UPSTimer))+tex2D(diffuseSampler1, input.texCoords-float2(UPSTimer,-UPSTimer)));
Colorka.a = Colorka.r;
if (Colorka.a > 0.75f)
{
Colorka.r=(1-Colorka.r)/4+Colorka.r;
Colorka.g=(1-Colorka.g)/4+Colorka.g;
Colorka.b=(1-Colorka.b)/4+Colorka.b;
}
if (Colorka.a > 0.90f)
{
Colorka.r=1;
Colorka.g=1;
Colorka.b=1;
}
Colorka.a = Colorka.a;
Colorka.b = Colorka.b*2;
Colorka.g = Colorka.b;
Colorka.rgb=Colorka.rgb/4;
output.color.rgba = Colorka;
return output;
}
technique MainTechnique
{
pass p
{
AlphaBlendEnable= true;
PixelShader = compile ps_2_0 PSMain();
}
}
На стороне кода игры
Define tModel=xLoadMesh("Resurse\Models\Water\Model.b3d");Плоскость
Define tShader = xLoadFXFile("Resurse\Shaders\Water2.fx")
Define tTextureDiffuse.i=xLoadTexture("Resurse\Shaders\W1.png")
Define tTextureDiffuse1.i=xLoadTexture("Resurse\Shaders\W2.png")
xSetEntityEffect(tModel,tShader)
xSetEffectTechnique(tModel,"MainTechnique")
xSetEffectTexture(tModel, "diffuseTexture",tTextureDiffuse)
xSetEffectTexture(tModel, "diffuseTexture1",tTextureDiffuse1)
Define UPSTimer.f=0
;В цикле пишем
UPSTimer=UPSTimer+0.00025
xSetEffectFloat(tModel, "UPSTimer",UPSTimer)
Нам также понадобится две текстуры W1 W2. В примерах Xors3D есть два png изображения Fire_NormalF.png и Fire_NormalS.png. Меняем их в редакторе, придавая оттенки серого.
