From 1f6c3a771ec811be9363d887ec643dddba9b7696 Mon Sep 17 00:00:00 2001 From: Timur Gagiev Date: Fri, 6 Nov 2020 05:06:31 +0300 Subject: [PATCH] remove sEnvironment sampler from shaders --- src/shaders/common.hlsl | 41 ++++++++++++++++++++++----------- src/shaders/compose.glsl | 8 +++---- src/shaders/compose_mirror.hlsl | 3 ++- src/shaders/filter.glsl | 4 ++-- src/shaders/sky.hlsl | 2 +- src/shaders/water_rays.hlsl | 8 +++---- 6 files changed, 40 insertions(+), 26 deletions(-) diff --git a/src/shaders/common.hlsl b/src/shaders/common.hlsl index 9c5edd9..5e3db85 100644 --- a/src/shaders/common.hlsl +++ b/src/shaders/common.hlsl @@ -44,16 +44,21 @@ struct VS_INPUT { SamplerState smpLinearWrap : register(s4); SamplerComparisonState smpCmp : register(s5); - Texture2D sDiffuse : register(t0); -#ifdef NORMAL_AS_3D - Texture3D sNormal : register(t1); -#else - Texture2D sNormal : register(t1); -#endif + #ifdef DIFFUSE_AS_CUBE + TextureCube sDiffuse : register(t0); + #else + Texture2D sDiffuse : register(t0); + #endif + + #ifdef NORMAL_AS_3D + Texture3D sNormal : register(t1); + #else + Texture2D sNormal : register(t1); + #endif + Texture2D sReflect : register(t2); Texture2D sShadow : register(t3); - TextureCube sEnvironment : register(t4); - Texture2D sMask : register(t5); + Texture2D sMask : register(t4); #define SAMPLE_2D(T,uv) T.Sample(smpDefault, uv) #define SAMPLE_2D_POINT(T,uv) T.Sample(smpPoint, uv) @@ -64,14 +69,20 @@ struct VS_INPUT { #define SAMPLE_2D_LOD0(T,uv) T.SampleLevel(smpLinear, uv, 0) #define SAMPLE_3D(T,uv) T.SampleLevel(smpLinearWrap, uv, 0) #define SAMPLE_CUBE(T,uv) T.Sample(smpLinear, uv) + + #define POSITION SV_POSITION #else - sampler2D sDiffuse : register(s0); + #ifdef DIFFUSE_AS_CUBE + samplerCUBE sDiffuse : register(s0); + #else + sampler2D sDiffuse : register(s0); + #endif + sampler2D sNormal : register(s1); sampler2D sReflect : register(s2); sampler2D sShadow : register(s3); - samplerCUBE sEnvironment : register(s4); - sampler2D sMask : register(s5); - + sampler2D sMask : register(s4); + #define SAMPLE_2D(T,uv) tex2D(T, uv) #define SAMPLE_2D_POINT(T,uv) tex2D(T, uv) #define SAMPLE_2D_POINT_WRAP(T,uv) tex2D(T, uv) @@ -81,8 +92,10 @@ struct VS_INPUT { #define SAMPLE_2D_CMP(T,uv) ((tex2D(T, uv.xy) => uv.z) ? 1 : 0) #define SAMPLE_3D(T,uv) tex3D(T, uv) #define SAMPLE_CUBE(T,uv) texCUBE(T, uv) - - #define SV_POSITION POSITION + + #ifdef PIXEL + #define POSITION VPOS + #endif #endif float4 uParam : register( c0 ); diff --git a/src/shaders/compose.glsl b/src/shaders/compose.glsl index 5123250..16264ff 100644 --- a/src/shaders/compose.glsl +++ b/src/shaders/compose.glsl @@ -247,10 +247,10 @@ varying vec4 vTexCoord; // xy - atlas coords, zw - trapezoidal correction #else - uniform sampler2D sDiffuse; - #ifdef TYPE_MIRROR - uniform samplerCube sEnvironment; + uniform samplerCube sDiffuse; + #else + uniform sampler2D sDiffuse; #endif float unpack(vec4 value) { @@ -356,7 +356,7 @@ varying vec4 vTexCoord; // xy - atlas coords, zw - trapezoidal correction vec4 color; #ifdef TYPE_MIRROR vec3 rv = reflect(-normalize(vViewVec.xyz), normalize(vNormal.xyz)); - color = textureCube(sEnvironment, normalize(rv)); + color = textureCube(sDiffuse, normalize(rv)); #else #ifndef TYPE_SPRITE #ifdef OPT_TRAPEZOID diff --git a/src/shaders/compose_mirror.hlsl b/src/shaders/compose_mirror.hlsl index 2a84b12..df1a487 100644 --- a/src/shaders/compose_mirror.hlsl +++ b/src/shaders/compose_mirror.hlsl @@ -1,3 +1,4 @@ +#define DIFFUSE_AS_CUBE #include "common.hlsl" struct VS_OUTPUT { @@ -31,7 +32,7 @@ VS_OUTPUT main(VS_INPUT In) { float4 main(VS_OUTPUT In) : COLOR0 { float3 rv = reflect(-In.viewVec.xyz, In.normal.xyz); - float4 color = SAMPLE_CUBE(sEnvironment, normalize(rv)); + float4 color = SAMPLE_CUBE(sDiffuse, normalize(rv)); color *= uMaterial; color.xyz = saturate(color.xyz); diff --git a/src/shaders/filter.glsl b/src/shaders/filter.glsl index 925e45b..b8f8bd2 100644 --- a/src/shaders/filter.glsl +++ b/src/shaders/filter.glsl @@ -71,14 +71,14 @@ uniform mat4 uViewProj; #endif #ifdef FILTER_EQUIRECTANGULAR - uniform samplerCube sEnvironment; + uniform samplerCube sDiffuse; #define PI 3.14159265358979323846 vec4 equirectangular() { vec2 a = (vTexCoord - 0.5) * vec2(PI * 2.0, PI); vec3 v = vec3(sin(a.x) * cos(a.y), -sin(a.y), cos(a.x) * cos(a.y)); - return textureCube(sEnvironment, normalize(v)); + return textureCube(sDiffuse, normalize(v)); } #endif diff --git a/src/shaders/sky.hlsl b/src/shaders/sky.hlsl index 2b05139..801ecec 100644 --- a/src/shaders/sky.hlsl +++ b/src/shaders/sky.hlsl @@ -3,7 +3,7 @@ #include "common.hlsl" struct VS_OUTPUT { - float4 pos : SV_POSITION; + float4 pos : POSITION; half4 color : TEXCOORD0; half2 texCoord : TEXCOORD1; float3 coord : TEXCOORD2; diff --git a/src/shaders/water_rays.hlsl b/src/shaders/water_rays.hlsl index ff776b5..3020c1b 100644 --- a/src/shaders/water_rays.hlsl +++ b/src/shaders/water_rays.hlsl @@ -29,13 +29,13 @@ float boxIntersect(float3 rayPos, float3 rayDir, float3 center, float3 hsize) { float3 m = min(bMin, bMax); return max(0.0, max(m.x, max(m.y, m.z))); } - -#ifdef _GAPI_GXM + +#if defined(_GAPI_GXM) float4 main(VS_OUTPUT In) : COLOR0 { float2 pixelCoord = float2(__pixel_x(), __pixel_y()); -#else defined(_GAPI_D3D11 +#else float4 main(VS_OUTPUT In) : COLOR0 { - float2 pixelCoord = In.pos.xy; + float2 pixelCoord = In.pos.xy; #endif float3 viewVec = normalize(In.viewVec);