Level shading

Posted By: frescosteve

Level shading - 10/22/09 14:11

Hey guys, I know how to add a shader to a model, but is it possible to add a shader to the level (WED objects).

(Using toon shader for models, need to appy to level)

T.I.A
Posted By: darkinferno

Re: Level shading - 10/22/09 14:32

T.I.A? [this is africa]? grin

lol, dont worry, i know what it actually means, you can add shaders to blocks too, i think its easily defined in the manual under "shader library"
Posted By: sPlKe

Re: Level shading - 10/22/09 20:59

its just slow as hell. and i really mean slow as hell...
Posted By: Slin

Re: Level shading - 10/22/09 21:50

Originally Posted By: sPlKe
its just slow as hell. and i really mean slow as hell...

not really...
Posted By: darkinferno

Re: Level shading - 10/23/09 03:12

Originally Posted By: Slin
Originally Posted By: sPlKe
its just slow as hell. and i really mean slow as hell...

not really...


well... i've never seen a decent size level using shaders, not saying its slow or isnt just that, i dont know
Posted By: JibbSmart

Re: Level shading - 10/23/09 11:01

I think Slin's point is that Spike's comment is probably based on a issue the engine had a long time ago. I could be very wrong laugh

Jibb
Posted By: Slin

Re: Level shading - 10/23/09 11:32

Exactly JulzMighty, the problem is meant to be gone with A7, and I actually think that it really is. Also many people think that levelgeometry levels are bad, but lately they are the betterchoice in many terms and in nearly no way worse than the alternative (at the moment I can only think of LOD which I think isn't possible with it)
Posted By: xXxGuitar511

Re: Level shading - 10/26/09 19:35

The reason shaders on level geometry is usually slow is because of the clipping the engine uses.

For example, a simple sphere model is visible, you are so close it covers the entire screen. The model will only draw the faces visible with the shader.

When the level covers all visible screen areas, it sometimes draws other parts of the level nearby in the background as well, so it's drawing a lot more.

This is why proper occlusion clipping is so wonderful, it clips out all those background planes because it knows the one visible is blocking it. BSP uses regions of levels for clipping, so theirs still extras. ABT is sort of a mix, and better, but not close.


NOt that this info will really help you, but it's some info which is always nice... i think.
Posted By: FakeTruth

Re: Level shading - 11/26/09 21:27

Hi all!
I think I have the same question.

here's my code in the .c file
Code:
BMAP* normalMap = "NormalMap.jpg";
BMAP* diffuseMap = "DiffuseMap.jpg";
MATERIAL* m_Normal ={
	skin1 = diffuseMap;
	skin2 = normalMap;
	skin3 = normalMap;
	effect="bump.fx";
}




And here's the shader (it's the default A7 bump.fx shader, but edited. I changed the entSkin's into mtlSkin's so I can specify it through the material definition)
Code:
// Lambert bump mapping
// (c) oP group 2008  Version 2.1

#include <bump_vs>
#include <phong>

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

sampler sBaseTex = sampler_state { Texture = <mtlSkin1>; MipFilter = Linear;	};
sampler sSkin2 = sampler_state { Texture = <mtlSkin2>; MipFilter = Linear;	};
sampler sSkin3 = sampler_state { Texture = <mtlSkin3>; MipFilter = Linear;	};


float3 DoDiffuse(bumpOut In,float3 Normal)
{
	float3 Diffuse = In.Diffuse1 * saturate(dot(normalize(In.Light1.xyz),Normal));
	Diffuse += In.Diffuse2 * saturate(dot(normalize(In.Light2.xyz),Normal));
	Diffuse += In.Diffuse3 * saturate(dot(normalize(In.Light3.xyz),Normal));
	return Diffuse * vecDiffuse.xyz;
}

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

float4 diffuseBumpLM_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 = DoDiffuse(In,Normalmap);	
	return Base * DoLightmap(Diffuse,Lightmap,In.Ambient);
}

technique bump
{
	pass one
	{		
		VertexShader = compile vs_2_0 bump_VS();
		PixelShader = compile ps_2_0 diffuseBump_PS();
	}
}

technique bump_lm
{
	pass one
	{		
		VertexShader = compile vs_2_0 bump_VS();
		PixelShader = compile ps_2_0 diffuseBumpLM_PS();
	}
}

technique fallback { pass one { } }



In WED I have assigned the m_Normal material to a level block.

Now when I run it, I get this error:
#DEFAULT - normal or height map missing

where #DEFAULT is the default texture applied to the level block

When I look at the level block with the m_Normal material, it looks like crap. Also, I don't get this error when I apply the material to an entity.

Can anybody help me? frown
© 2024 lite-C Forums