SyntaxGameServer/Player2014/shaders/source/plastic.hlsl

47 lines
1.1 KiB
HLSL

#if defined(PIN_HQ)
#define PIN_SURFACE
#include "default.hlsl"
#define CFG_TEXTURE_TILING 1
#define CFG_BUMP_INTENSITY 0.5
#define CFG_SPECULAR 0.4
#define CFG_GLOSS 9
#define CFG_NORMAL_SHADOW_SCALE 0.1
Surface surfaceShader(SurfaceInput IN, float fade)
{
float4 studs = tex2D(DiffuseMap, IN.UvStuds);
float3 normal = nmapUnpack(tex2D(NormalMap, IN.UvStuds));
float3 noise = nmapUnpack(tex2D(NormalDetailMap, IN.Uv * (CFG_TEXTURE_TILING)));
float noiseScale = saturate0(IN.Color.a * 2 * (CFG_BUMP_INTENSITY) - 1 * (CFG_BUMP_INTENSITY));
#ifdef PIN_REFLECTION
noiseScale *= saturate(1 - 2 * IN.Reflectance);
#endif
normal.xy += noise.xy * noiseScale;
normal.xy *= fade;
Surface surface = (Surface)0;
surface.albedo = IN.Color.rgb * studs.rgb * 2;
surface.normal = normal;
surface.specular = (CFG_SPECULAR);
surface.gloss = (CFG_GLOSS);
#ifdef PIN_REFLECTION
surface.reflectance = IN.Reflectance;
#endif
return surface;
}
#else
#define PIN_PLASTIC
#include "default.hlsl"
#endif