pixel position in Weltkoordinaten im shader? (done)

Posted By: tagimbul

pixel position in Weltkoordinaten im shader? (done) - 07/11/17 21:57

hey =)
wie kann ich herausfinden an welcher x,y,z position,( in engine koordinaten, nicht shader), sich ein pixel im shader befindet?
ich würde gerne jedes pixel das unter einem gewissen wert ist, auslesen im shader

so das ich dann in den shader z.B eine variable geben kann wie my.z

mein ziel wäre es das ich ein terrain einen spezielen shader verpasse wo alles was unter einem gewissen Z wert und innerhalb von XY die textur anders rendere.

ich will damit einen gefaktes unterwasser boden schimmern erzeugen
und es interesiert mich schon lange wie man die position eines pixels herrausfinden kann in welkoordinaten.
Posted By: tagimbul

Re: pixel position in Weltkoordinaten im shader? - 07/11/17 22:21

...sorry den zu vorschnellen post.

ich habs rausgefunden...

Out.PosW = mul(In.Position, matWorld);

Code:
struct VS_INPUT
{
	float4 Position	: POSITION;
	float2 tex0 : TEXCOORD0;
	float3 PosW : TEXCOORD1;
	
};
struct VS_OUTPUT
{
	float4 PosWorld	: POSITION; 
	float2 tex0	: TEXCOORD0; 
	float3 PosW : TEXCOORD1;
};
// ----------------------------------------------------------------
// vertexshader 
// ----------------------------------------------------------------
VS_OUTPUT vs_main( VS_INPUT In ) 
{
	VS_OUTPUT Out;

	float4 Position = mul(In.Position, matWorldViewProj);
	Out.PosWorld = Position;
	Out.tex0 = In.tex0.xy;
	Out.PosW = mul(In.Position, matWorld);
	return Out;
}
float4 ps_main( VS_OUTPUT In) : COLOR
{
	
	
	float3 welk_koordinate;
	welk_koordinate.xzy = -In.PosW.xyz;
	
	float4 color = tex2D (Tex,In.tex0.xy);
	
	if(welk_koordinate.z > vecSkill1.x)
	color = 0;
	
	return  color;
}



omg das ermöglicht soviele neue möglichkeiten für mich =)
find ich totaaaal cool ^^
© 2024 lite-C Forums