Gamestudio Links
Zorro Links
Newest Posts
Help with plotting multiple ZigZag
by degenerate_762. 04/30/24 23:23
M1 Oversampling
by 11honza11. 04/30/24 08:16
Trading Journey
by howardR. 04/28/24 09:55
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
3 registered members (7th_zorro, TipmyPip, RealSerious3D), 892 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 3 1 2 3
pp_set/add setting obscure screen size #442022
06/08/14 20:58
06/08/14 20:58
Joined: Mar 2003
Posts: 1,524
Canada
Stansmedia Offline OP
Serious User
Stansmedia  Offline OP
Serious User

Joined: Mar 2003
Posts: 1,524
Canada
I'm trying to load up the HDR shader and blur shader, but the game window ends up being a small box in the top left. Is there a specific way to call post processing shaders? Like before/after level load with a wait call or something? It was fine before, but now I've added a level loading function so I can call it with a number, have all my variables reset or change yadayada, it went all weird.


Decessus - 80% done. 100% abandoned.
GET MY ANDROID GAME! https://play.google.com/store/apps/details?id=com.lasertrain.zspinballfree&hl=en
Re: pp_set/add setting obscure screen size [Re: Stansmedia] #442110
06/11/14 16:42
06/11/14 16:42
Joined: Mar 2003
Posts: 1,524
Canada
Stansmedia Offline OP
Serious User
Stansmedia  Offline OP
Serious User

Joined: Mar 2003
Posts: 1,524
Canada
I guess while I got a thread open...

Is it normal for mirror planes and water reflections to mirror the view at a higher inverted z? Like, if something was halfway in the water, and the reflection didn't match up with the model. Is that normal? Or can this be fixed.


Decessus - 80% done. 100% abandoned.
GET MY ANDROID GAME! https://play.google.com/store/apps/details?id=com.lasertrain.zspinballfree&hl=en
Re: pp_set/add setting obscure screen size [Re: Stansmedia] #442111
06/11/14 18:39
06/11/14 18:39
Joined: Mar 2003
Posts: 1,524
Canada
Stansmedia Offline OP
Serious User
Stansmedia  Offline OP
Serious User

Joined: Mar 2003
Posts: 1,524
Canada
portalclip - noshader/noparticle... Somebody grab a sock and a bar of soap.

Theres no way to use portalclip and have shaders reflect? :'(


Decessus - 80% done. 100% abandoned.
GET MY ANDROID GAME! https://play.google.com/store/apps/details?id=com.lasertrain.zspinballfree&hl=en
Re: pp_set/add setting obscure screen size [Re: Stansmedia] #442113
06/11/14 19:04
06/11/14 19:04
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Originally Posted By: Stansmedia
Is it normal for mirror planes and water reflections to mirror the view at a higher inverted z? Like, if something was halfway in the water, and the reflection didn't match up with the model. Is that normal? Or can this be fixed.

This sounds like your reflection view z or the waterheight is not set correctly.

Just don't set NOSHADER for the reflection view, it's stupid that this flag is there anyway.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: pp_set/add setting obscure screen size [Re: Superku] #442115
06/11/14 23:46
06/11/14 23:46
Joined: Mar 2003
Posts: 1,524
Canada
Stansmedia Offline OP
Serious User
Stansmedia  Offline OP
Serious User

Joined: Mar 2003
Posts: 1,524
Canada
The odd matched z is from portalclip not being set, and noshader only works with portal clip set. So I'm stuck with two options: reflect shaders, but show z clipping "artificat", or render it properly but without shaders.

The "cut scene" im using this for is probably going to raise some red flags sooo. It would be cool if there is a way. Really cool. Raise those flag higher.


Decessus - 80% done. 100% abandoned.
GET MY ANDROID GAME! https://play.google.com/store/apps/details?id=com.lasertrain.zspinballfree&hl=en
Re: pp_set/add setting obscure screen size [Re: Stansmedia] #442121
06/12/14 08:35
06/12/14 08:35
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Option three: Create a copy of each material/ shader that has an object which penetrates the water surface. Then add something like
clip(inPos.y-waterheight_var);
in your pixel shader of said materials and preferably only use those materials in the reflection view (ENABLE_TREE and similar flags plus material events and render_view).


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: pp_set/add setting obscure screen size [Re: Superku] #442174
06/14/14 03:11
06/14/14 03:11
Joined: Mar 2003
Posts: 1,524
Canada
Stansmedia Offline OP
Serious User
Stansmedia  Offline OP
Serious User

Joined: Mar 2003
Posts: 1,524
Canada
Where should I slip the clip(..) into the shader code?

Code:
//////////////////////////////////////////////////////////////////////
// Blinn / Phong bump mapping
// (c) oP group 2010  Version 2.3
//////////////////////////////////////////////////////////////////////

#include <bump_vs>
#include <phong>

bool REQUIRE_NORMAL;

texture entSkin1;	// texture
texture entSkin2;	// normal map or lightmap
texture entSkin3;	// normal map on blocks

sampler sBaseTex = sampler_state { Texture = <entSkin1>; MipFilter = Linear;	};
sampler sSkin2 = sampler_state { Texture = <entSkin2>; MipFilter = None;	};
sampler sSkin3 = sampler_state { Texture = <entSkin3>; MipFilter = None;	};

float3 DoSpecular(bumpOut In,float3 Normal,float fSpecular)
{
#ifdef BLINN
	float3 viewDir = -normalize(In.ViewDir);	
			
	float fLight = dot(In.LightDir1.xyz,Normal);
	float3 R = reflect(In.LightDir1.xyz,Normal);
	float3 Diffuse = DoPhong(In.Diffuse1,fLight,dot(R,viewDir),fSpecular);
	fLight = dot(In.LightDir2.xyz,Normal);
	R = reflect(In.LightDir2.xyz,Normal);
	Diffuse += DoPhong(In.Diffuse2,fLight,dot(R,viewDir),fSpecular);

	fLight = dot(In.LightDir3.xyz,Normal);
	R = reflect(In.LightDir3.xyz,Normal);
	Diffuse += DoPhong(In.Diffuse3,fLight,dot(R,viewDir),fSpecular);
	
#else // PHONG			
	float fLight = dot(In.LightDir1.xyz,Normal);
	float3 Diffuse = DoPhong(In.Diffuse1,fLight,fLight,fSpecular);		

	fLight = dot(In.LightDir2.xyz,Normal);
	Diffuse += DoPhong(In.Diffuse2,fLight,fLight,fSpecular);		

	fLight = dot(In.LightDir3.xyz,Normal);
	Diffuse += DoPhong(In.Diffuse3,fLight,fLight,fSpecular);
#endif

	return Diffuse;
}

float4 specBump_PS(bumpOut In): COLOR
{
	float4 Base = tex2D(sBaseTex,In.Tex12.xy);
	float3 Normalmap = tex2D(sSkin2,In.Tex12.xy)*2-1;
  float3 Diffuse = DoSpecular(In,Normalmap,Base.w);	
	return Base * DoColor(Diffuse,In.Ambient);
}

float4 specBumpLM_PS(bumpOut In): COLOR
{
	float4 Base = tex2D(sBaseTex,In.Tex12.xy);
	float4 Lightmap = tex2D(sSkin2,In.Tex12.zw);
	float3 Normalmap = tex2D(sSkin3,In.Tex12.xy)*2-1;
  float3 Diffuse = DoSpecular(In,Normalmap,Base.w);	
	return Base * DoLightmap(Diffuse,Lightmap,In.Ambient);
}


technique spec
{
	pass one
	{	
      ZWriteEnable = True;
      AlphaBlendEnable = False;

		VertexShader = compile vs_2_0 bump_VS();
		PixelShader = compile ps_2_0 specBump_PS();
	}
}

technique spec_lm
{
	pass one
	{		
		ZWriteEnable = True;
		AlphaBlendEnable = False;
		
		VertexShader = compile vs_2_0 bump_VS();
		PixelShader = compile ps_2_0 specBumpLM_PS();
	}
}

technique fallback { pass one { } }



Decessus - 80% done. 100% abandoned.
GET MY ANDROID GAME! https://play.google.com/store/apps/details?id=com.lasertrain.zspinballfree&hl=en
Re: pp_set/add setting obscure screen size [Re: Stansmedia] #442175
06/14/14 04:37
06/14/14 04:37
Joined: Mar 2003
Posts: 1,524
Canada
Stansmedia Offline OP
Serious User
Stansmedia  Offline OP
Serious User

Joined: Mar 2003
Posts: 1,524
Canada
Im looking at the enable_tree and render_view stuff in the manual. I have no idea what I'm doing. I can't figure out how to get each shader to render only on a specific view. Maybe im just tired (easy excuse). If you got time superku please help. if not I wont be heartbroken.


Decessus - 80% done. 100% abandoned.
GET MY ANDROID GAME! https://play.google.com/store/apps/details?id=com.lasertrain.zspinballfree&hl=en
Re: pp_set/add setting obscure screen size [Re: Stansmedia] #442178
06/14/14 09:50
06/14/14 09:50
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
I'm not too familiar with the default engine shaders so changing and adapting them would probably mean more work than just writing a new normal mapping shader.
I suggest you simply take the normal mapping shader from the online shader tutorial and adapt it as follows:

1) In your vertex shader you will need to OUTput the y world position of the vertex, for instance make OutTex a float3 instead of float2 and write
OutTex.z = mul(inPos,matWorld).y;

2) Your pixel shader will now need to import float3 as inTex, too, then simply write the following line at the beginning of the pixel shader function:
clip(inTex.z-water_height_var);

3) Define var water_height = 123; in your script and write float water_height_var; at the beginning of your shader file.

4) Material events can be utilized as follows:

var mat_my_bump_switch_event()
{
if(render_view == camera) mtl = mat_my_bump;
else mtl = mat_my_bump_clip;
return 0;
}

MATERIAL* mat_my_bump = {...}
MATERIAL* mat_my_bump_clip = {nm shader with clip code}
MATERIAL* mat_my_bump_switch =
{
event = mat_my_bump_switch_event;
flags = ENABLE_RENDER;
}

Now apply the mat_my_bump_switch material to your entities which can penetrate the water surface.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: pp_set/add setting obscure screen size [Re: Superku] #442186
06/14/14 16:18
06/14/14 16:18
Joined: Mar 2003
Posts: 1,524
Canada
Stansmedia Offline OP
Serious User
Stansmedia  Offline OP
Serious User

Joined: Mar 2003
Posts: 1,524
Canada
Thank you. Being able to switch the material in the view has made this a lot frickin creepier. But it is not clipping at the water plane :'(



Code:
// Tweakables: 
static const float AmbientIntensity  = 1.0f; // The intensity of the ambient light. 
static const float DiffuseIntensity = 1.0f;  // The intensity of the diffuse light. 
static const float SpecularIntensity = 1.0f; // The intensity of the specular light. 
static const float SpecularPower = 8.0f;     // The specular power. Used as 'glossyness' factor. 
static const float4 SunColor = {0.9f, 0.9f, 0.5f, 1.0f}; // Color vector of the sunlight. 

float water_height_var;
  
// Application fed data: 
const float4x4 matWorldViewProj; // World*view*projection matrix. 
const float4x4 matWorld; // World matrix. 
const float4 vecAmbient; // Ambient color. 
const float4 vecSunDir;  // Sun light direction vector. 
const float4 vecViewPos; // View position. 
    
float3x3 matTangent; // hint for the engine to create tangents in TEXCOORD2

texture mtlSkin1; 
sampler ColorMapSampler = sampler_state  // Color map sampler. 
{ 
   Texture = <mtlSkin1>; 
   MipFilter = Linear;   // required for mipmapping
}; 
    
texture mtlSkin2;  // Normal map. 
sampler NormalMapSampler = sampler_state  // Normal map sampler. 
{ 
   Texture = <mtlSkin2>; 
   MipFilter = None;   // a normal map usually has no mipmaps
}; 

// Vertex Shader: 
void NormalMapVS( in float4 InPos: POSITION, 
   in float3 InNormal: NORMAL, 
   in float3 InTex: TEXCOORD0, 
   in float4 InTangent: TEXCOORD2, 
   out float4 OutPos: POSITION, 
   out float3 OutTex: TEXCOORD0, 
   out float3 OutViewDir: TEXCOORD1, 
   out float3 OutSunDir: TEXCOORD2) 
{ 

// Transform the vertex from object space to clip space: 
   OutPos = mul(InPos, matWorldViewProj); 
// Pass the texture coordinate to the pixel shader: 
   OutTex = InTex;
   OutTex.z = mul(InPos,matWorld).y;
// Compute 3x3 matrix to transform from world space to tangent space: 
   matTangent[0] = mul(InTangent.xyz, matWorld); 
   matTangent[1] = mul(cross(InTangent.xyz, InNormal)*InTangent.w, matWorld); 
   matTangent[2] = mul(InNormal, matWorld); 
// Calculate the view direction vector in tangent space: 
   OutViewDir = normalize(mul(matTangent, (vecViewPos - mul(InPos,matWorld)))); 
// Calculate the light direction vector in tangent space: 
   OutSunDir = normalize(mul(matTangent, -vecSunDir)); 
} 
 
// Pixel Shader: 
float4 NormalMapPS(
   in float3 InTex: TEXCOORD0, 
   in float3 InViewDir: TEXCOORD1, 
   in float3 InSunDir: TEXCOORD2): COLOR 
{ 
	clip(InTex.z-water_height_var);
// Read the normal from the normal map and convert from [0..1] to [-1..1] range 
   float3 BumpNormal = tex2D(NormalMapSampler, InTex)*2 - 1; 
// Calculate the ambient term: 
   float4 Ambient = AmbientIntensity * vecAmbient; 
// Calculate the diffuse term: 
   float4 Diffuse = DiffuseIntensity * SunColor * saturate(dot(InSunDir, BumpNormal)); 
// Calculate the reflection vector: 
   float3 R = normalize(2 * dot(BumpNormal, InSunDir) * BumpNormal - InSunDir); 
// Calculate the specular term: 
   InViewDir = normalize(InViewDir); 
   float Specular = pow(saturate(dot(R, InViewDir)), SpecularPower) * SpecularIntensity; 
// Fetch the pixel color from the color map: 
   float4 Color = tex2D(ColorMapSampler, InTex); 
// Calculate final color: 
   return (Ambient + Diffuse + Specular) * Color; 
} 
 
// Technique: 
technique NormalMapTechnique 
{ 
   pass P0 
   { 
     VertexShader = compile vs_2_0 NormalMapVS(); 
     PixelShader  = compile ps_2_0 NormalMapPS(); 
   } 
}



EDIT:

Works! The water_heigh_var isn't making its way into the shader properly.. I just set my water plan height directly in the shader and it works laugh

Last edited by Stansmedia; 06/14/14 19:59.

Decessus - 80% done. 100% abandoned.
GET MY ANDROID GAME! https://play.google.com/store/apps/details?id=com.lasertrain.zspinballfree&hl=en
Page 1 of 3 1 2 3

Moderated by  Blink, Hummel, Superku 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1