Lightwave effect
From GameStudio Wiki
Thanks to ello for sharing this shader!
[edit]
Lite-C:
Material and function to adjust the effect:
//Lightwave
MATERIAL* Lightwave_mat =
{
effect = "Lightwave.fx";
}
function Lightwave_set_Value(r,g,b)
{
Lightwave_mat.skill1 = floatv(r); //2 looks okay
Lightwave_mat.skill2 = floatv(g); //0
Lightwave_mat.skill3 = floatv(b); //same as r
}
The Lightwave.fx file:
//Lightwave effect
float4 vecSkill1;
float4 vecViewPort;
Texture TargetMap;
sampler2D smpSource = sampler_state { texture = <TargetMap>; };
float4 lightwavePS( float2 Tex : TEXCOORD0 ) : COLOR0
{
half4 Color = 0;
Color.r = tex2D(smpSource,Tex.xy + float2(vecViewPort.z*vecSkill1.x,0));
Color.g = tex2D(smpSource,Tex.xy + float2(0,vecViewPort.w*vecSkill1.y));
Color.b = tex2D(smpSource,Tex.xy - float2(vecViewPort.z*vecSkill1.z,0));
return Color;
}
technique postFX
{
pass p1
{
PixelShader = compile ps_2_0 lightwavePS();
}
}
technique fallback { pass one { } }
[edit]
C-Script
Material and function to adjust the effect:
//Lightwave
material Lightwave_mat
{
effect = "Lightwave.fx";
}
function Lightwave_set_Value(r,g,b)
{
Lightwave_mat.skill1 = floatv(r); //2 looks okay
Lightwave_mat.skill2 = floatv(g); //0
Lightwave_mat.skill3 = floatv(b); //same as r
}
The Lightwave.fx file:
//Lightwave effect
float4 vecSkill1;
float4 vecViewPort;
Texture entSkin1;
sampler2D smpSource = sampler_state { texture = <entSkin1>; };
float4 lightwavePS( float2 Tex : TEXCOORD0 ) : COLOR0
{
half4 Color = 0;
Color.r = tex2D(smpSource,Tex.xy + float2(vecViewPort.z*vecSkill1.x,0));
Color.g = tex2D(smpSource,Tex.xy + float2(0,vecViewPort.w*vecSkill1.y));
Color.b = tex2D(smpSource,Tex.xy - float2(vecViewPort.z*vecSkill1.z,0));
return Color;
}
technique postFX
{
pass p1
{
PixelShader = compile ps_2_0 lightwavePS();
}
}
technique fallback { pass one { } }
--Slin 15:57, 17 November 2007 (CET)
