Dream

From GameStudio Wiki

Jump to: navigation, search

Lite-C:


Material and function to adjust the effect:

// Dream like effect
MATERIAL* Dream_mat =
{
	effect = "dream.fx";
}

function Dream_set_Value(Blur,Sharpness,Speed,Range)
{
	Dream_mat.skill1 = floatv(Blur);	// 2 looks good
	Dream_mat.skill2 = floatv(Sharpness);	// 7 looks good
	Dream_mat.skill3 = floatv(Speed);	//0.1
	Dream_mat.skill4 = floatv(Range);	//0.4
}

The dream.fx file:

//////////////////////////////////////
///////simple dream like effect///////
//////////////////////////////////////

float4 vecSkill1;
float4 vecTime;

texture TargetMap;

sampler postTex = sampler_state
{
   texture = (TargetMap);
   MinFilter = linear;
   MagFilter = linear;
   MipFilter = linear;
   AddressU = Clamp;
   AddressV = Clamp;
};

float4 Dream_PS( float2 Tex : TEXCOORD0 ) : COLOR0
{
	float4 Color;
	
	Tex.xy -= 0.5;
	Tex.xy *= 1-(sin(vecTime.w*vecSkill1[2])*vecSkill1[3]+vecSkill1[3])*0.5;
	Tex.xy += 0.5;
	
	Color = tex2D( postTex, Tex.xy);

	Color += tex2D( postTex, Tex.xy+0.001*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.003*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.005*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.007*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.009*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.011*vecSkill1[0]);

	Color += tex2D( postTex, Tex.xy-0.001*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.003*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.005*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.007*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.009*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.011*vecSkill1[0]);

	Color.rgb = (Color.r+Color.g+Color.b)/3.0f;

	Color /= vecSkill1[1];
	return Color;
}

technique tech_00
{
	pass pass_00
	{
		VertexShader = null;
		PixelShader = compile ps_2_0 Dream_PS();
	}
}

technique fallback { pass one { } }


C-Script


Material and function to adjust the effect:

// Dream like effect
material Dream_mat
{
	effect = "dream.fx";
}

function Dream_set_Value(Blur,Sharpness,Speed,Range)
{
	Dream_mat.skill1 = floatv(Blur);	// 2 looks good
	Dream_mat.skill2 = floatv(Sharpness);	// 7 looks good
	Dream_mat.skill3 = floatv(Speed);	//0.1
	Dream_mat.skill4 = floatv(Range); //0.4
}

The dream.fx file:

//////////////////////////////////////
///////simple dream like effect///////
//////////////////////////////////////

float4 vecSkill1;
float4 vecTime;

texture entSkin1;

sampler postTex = sampler_state
{
   texture = (entSkin1);
   MinFilter = linear;
   MagFilter = linear;
   MipFilter = linear;
   AddressU = Clamp;
   AddressV = Clamp;
};

float4 Dream_PS( float2 Tex : TEXCOORD0 ) : COLOR0
{
	float4 Color;
	
	Tex.xy -= 0.5;
	Tex.xy *= 1-(sin(vecTime.w*vecSkill1[2])*vecSkill1[3]+vecSkill1[3])*0.5;
	Tex.xy += 0.5;
	
	Color = tex2D( postTex, Tex.xy);

	Color += tex2D( postTex, Tex.xy+0.001*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.003*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.005*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.007*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.009*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy+0.011*vecSkill1[0]);

	Color += tex2D( postTex, Tex.xy-0.001*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.003*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.005*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.007*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.009*vecSkill1[0]);
	Color += tex2D( postTex, Tex.xy-0.011*vecSkill1[0]);

	Color.rgb = (Color.r+Color.g+Color.b)/3.0f;

	Color /= vecSkill1[1];
	return Color;
}

technique tech_00
{
	pass pass_00
	{
		VertexShader = null;
		PixelShader = compile ps_2_0 Dream_PS();
	}
}

technique tech_01
{
	pass pass_00
	{
		Texture[0] = <entSkin1>;
	}
}

--Slin 23:58, 10 November 2007 (CET)

Personal tools