diff options
author | Fire-Head <Fire-Head@users.noreply.github.com> | 2021-01-12 22:11:15 +0100 |
---|---|---|
committer | Fire-Head <Fire-Head@users.noreply.github.com> | 2021-01-12 22:11:15 +0100 |
commit | 3e6016dc6ee40372a06b74d24cae2f97428358f2 (patch) | |
tree | ff2420d56a8cc4ab1b9c0f43f720e6f6fbb8bc11 /src/extras/shaders/leedsVehicle_mobile_PS.hlsl | |
parent | rem gMakeResources (diff) | |
parent | Merge remote-tracking branch 'origin/miami' into lcs (diff) | |
download | re3-3e6016dc6ee40372a06b74d24cae2f97428358f2.tar re3-3e6016dc6ee40372a06b74d24cae2f97428358f2.tar.gz re3-3e6016dc6ee40372a06b74d24cae2f97428358f2.tar.bz2 re3-3e6016dc6ee40372a06b74d24cae2f97428358f2.tar.lz re3-3e6016dc6ee40372a06b74d24cae2f97428358f2.tar.xz re3-3e6016dc6ee40372a06b74d24cae2f97428358f2.tar.zst re3-3e6016dc6ee40372a06b74d24cae2f97428358f2.zip |
Diffstat (limited to '')
-rw-r--r-- | src/extras/shaders/leedsVehicle_mobile_PS.hlsl | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/extras/shaders/leedsVehicle_mobile_PS.hlsl b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl new file mode 100644 index 00000000..da09b872 --- /dev/null +++ b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl @@ -0,0 +1,53 @@ +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); + color.a = opacity; + + color.rgb = lerp(fogColor.rgb, color.rgb, input.TexCoord0.z); + + return color; +} |