From 9b2037419f96c6627cb5f2a6f9d127ef1dcdb9df Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 12 Jan 2021 13:41:22 +0100 Subject: mobile vehicle rendering --- src/extras/shaders/leedsVehicle_mobile_PS.hlsl | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/extras/shaders/leedsVehicle_mobile_PS.hlsl (limited to 'src/extras/shaders/leedsVehicle_mobile_PS.hlsl') diff --git a/src/extras/shaders/leedsVehicle_mobile_PS.hlsl b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl new file mode 100644 index 00000000..e81c66c9 --- /dev/null +++ b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl @@ -0,0 +1,54 @@ +struct VS_out { + float4 Position : POSITION; + float3 TexCoord0 : TEXCOORD0; + float2 TexCoord1 : TEXCOORD1; + float2 ReflData : TEXCOORD2; + float4 Color : COLOR0; +}; + +#define NdotV (input.ReflData.x) +#define lightingCont (input.ReflData.y) + +sampler2D diffTex : register(s0); +sampler2D envTex : register(s1); + +float4 fogColor : register(c0); + +float4 fxparams : register(c1); +float3 skyTop : register(c2); +float3 skyBot : register(c3); + +#define shininess (fxparams.x) + +#define power (4.0) + +#define preMult (1.0) +#define postMult (1.0) +#define minRefl (0.25) +#define maxRefl (3.0) +#define minOpacity (1.0) +#define maxOpacity (1.0) + + +float4 main(VS_out input) : COLOR +{ + float4 pass1 = input.Color*tex2D(diffTex, input.TexCoord0.xy); + + float3 envtex = tex2D(envTex, float2(input.TexCoord1.x, 1.0-input.TexCoord1.y)).rgb; // V flipped + float3 skyColour = lerp(skyBot, skyTop, envtex.g); + float3 envOut = lerp(envtex.rrr, skyColour, envtex.b); + + float fresnel = lerp(shininess, shininess * 2.0, NdotV); + fresnel = pow(NdotV * preMult, power); + fresnel = clamp(fresnel * postMult, 0.0, 1.0); + float reflectivity = lightingCont * lerp(minRefl, maxRefl, fresnel)*shininess; + + float opacity = lerp(minOpacity, maxOpacity, fresnel)*pass1.a; + float4 color = pass1 + float4(reflectivity * envOut, 0.0); +//float4 color = float4(reflectivity, reflectivity, reflectivity, reflectivity); + color.a = opacity; + + color.rgb = lerp(fogColor.rgb, color.rgb, input.TexCoord0.z); + + return color; +} -- cgit v1.2.3 From 55320a03f14c473b0fff89585713d2ebd8feb92a Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 12 Jan 2021 14:07:24 +0100 Subject: little cleanup of vehicle rendering --- src/extras/shaders/leedsVehicle_mobile_PS.hlsl | 1 - 1 file changed, 1 deletion(-) (limited to 'src/extras/shaders/leedsVehicle_mobile_PS.hlsl') diff --git a/src/extras/shaders/leedsVehicle_mobile_PS.hlsl b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl index e81c66c9..da09b872 100644 --- a/src/extras/shaders/leedsVehicle_mobile_PS.hlsl +++ b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl @@ -45,7 +45,6 @@ float4 main(VS_out input) : COLOR float opacity = lerp(minOpacity, maxOpacity, fresnel)*pass1.a; float4 color = pass1 + float4(reflectivity * envOut, 0.0); -//float4 color = float4(reflectivity, reflectivity, reflectivity, reflectivity); color.a = opacity; color.rgb = lerp(fogColor.rgb, color.rgb, input.TexCoord0.z); -- cgit v1.2.3