From 5bfcf44d83e54e39ec45308918d04557e5e97b3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Thu, 2 Feb 2017 18:09:52 -0800 Subject: [PATCH] Cleanup. --- examples/21-deferred/fs_deferred_light.sc | 8 ++++---- examples/31-rsm/fs_rsm_combine.sc | 9 ++++----- examples/31-rsm/fs_rsm_lbuffer.sc | 8 ++++---- examples/31-rsm/vs_rsm_lbuffer.sc | 8 ++++---- scripts/shader-embeded.mk | 4 ++-- src/bgfx_shader.sh | 4 ++-- src/renderer.h | 4 +++- 7 files changed, 23 insertions(+), 22 deletions(-) diff --git a/examples/21-deferred/fs_deferred_light.sc b/examples/21-deferred/fs_deferred_light.sc index 0f9873b2c..8d11c4793 100644 --- a/examples/21-deferred/fs_deferred_light.sc +++ b/examples/21-deferred/fs_deferred_light.sc @@ -56,11 +56,11 @@ vec3 calcLight(int _idx, vec3 _wpos, vec3 _normal, vec3 _view) float toClipSpaceDepth(float _depthTextureZ) { -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL return _depthTextureZ; #else return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL } vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) @@ -76,9 +76,9 @@ void main() float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(v_texcoord0 * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL vec3 wpos = clipToWorld(u_mtx, clip); vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; diff --git a/examples/31-rsm/fs_rsm_combine.sc b/examples/31-rsm/fs_rsm_combine.sc index ae684960e..352dbb02e 100644 --- a/examples/31-rsm/fs_rsm_combine.sc +++ b/examples/31-rsm/fs_rsm_combine.sc @@ -68,11 +68,11 @@ float PCF(sampler2DShadow _sampler, vec4 _shadowCoord, float _bias, vec2 _texelS float toClipSpaceDepth(float _depthTextureZ) { -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL return _depthTextureZ; #else return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL } vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) @@ -81,7 +81,6 @@ vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) return wpos.xyz / wpos.w; } - void main() { vec3 n = texture2D(s_normal, v_texcoord0).xyz; @@ -98,9 +97,9 @@ void main() float deviceDepth = texture2D(s_depth, texCoord).x; float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(texCoord * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL vec3 wpos = clipToWorld(u_invMvp, clip); const float shadowMapOffset = 0.003; diff --git a/examples/31-rsm/fs_rsm_lbuffer.sc b/examples/31-rsm/fs_rsm_lbuffer.sc index 259c850a3..bbcc51d1f 100644 --- a/examples/31-rsm/fs_rsm_lbuffer.sc +++ b/examples/31-rsm/fs_rsm_lbuffer.sc @@ -14,11 +14,11 @@ uniform mat4 u_invMvp; float toClipSpaceDepth(float _depthTextureZ) { -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL return _depthTextureZ; #else return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL } vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) @@ -40,9 +40,9 @@ void main() float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(texCoord * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL vec3 wpos = clipToWorld(u_invMvp, clip); // Get normal from its map, and decompress diff --git a/examples/31-rsm/vs_rsm_lbuffer.sc b/examples/31-rsm/vs_rsm_lbuffer.sc index 357b38ec3..eed5b732c 100644 --- a/examples/31-rsm/vs_rsm_lbuffer.sc +++ b/examples/31-rsm/vs_rsm_lbuffer.sc @@ -18,11 +18,11 @@ SAMPLER2D(s_rsm, 3); // Reflective shadow map, used to scale/color light float toClipSpaceDepth(float _depthTextureZ) { -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL return _depthTextureZ; #else return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL } vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) @@ -41,9 +41,9 @@ void main() float deviceDepth = texture2DLod(s_shadowMap, texCoord, 0).x; float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(texCoord * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL vec3 wPos = clipToWorld(u_invMvpShadow, clip); wPos.y -= 0.001; // Would be much better to perturb in normal direction, but I didn't do that. diff --git a/scripts/shader-embeded.mk b/scripts/shader-embeded.mk index 04237955e..ac9d4d69b 100644 --- a/scripts/shader-embeded.mk +++ b/scripts/shader-embeded.mk @@ -56,8 +56,8 @@ cs_%.bin.h : cs_%.sc @echo [$(<)] $(SILENT) $(SHADERC) $(CS_FLAGS) --platform linux -p 430 -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_glsl @cat $(SHADER_TMP) > $(@) - -$(SILENT) $(SHADERC) $(CS_FLAGS) --platform linux -p spirv -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_spv - -@cat $(SHADER_TMP) >> $(@) +# -$(SILENT) $(SHADERC) $(CS_FLAGS) --platform linux -p spirv -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_spv +# -@cat $(SHADER_TMP) >> $(@) -$(SILENT) $(SHADERC) $(CS_FLAGS) --platform windows -p cs_5_0 -O 1 -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_dx11 -@cat $(SHADER_TMP) >> $(@) -@echo extern const uint8_t* $(basename $(<))_pssl;>> $(@) diff --git a/src/bgfx_shader.sh b/src/bgfx_shader.sh index e7dc8e4a7..2cab0ca0d 100644 --- a/src/bgfx_shader.sh +++ b/src/bgfx_shader.sh @@ -278,9 +278,9 @@ vec4 bgfxTexelFetch(BgfxSampler3D _sampler, ivec3 _coord, int _lod) # define sampler2DMS BgfxSampler2DMS # define SAMPLER2DSHADOW(_name, _reg) \ - uniform SamplerComparisonState _name ## Sampler : REGISTER(s, _reg); \ + uniform SamplerComparisonState _name ## SamplerComparison : REGISTER(s, _reg); \ uniform Texture2D _name ## Texture : REGISTER(t, _reg); \ - static BgfxSampler2DShadow _name = { _name ## Sampler, _name ## Texture } + static BgfxSampler2DShadow _name = { _name ## SamplerComparison, _name ## Texture } # define sampler2DShadow BgfxSampler2DShadow # define shadow2D(_sampler, _coord) bgfxShadow2D(_sampler, _coord) # define shadow2DProj(_sampler, _coord) bgfxShadow2DProj(_sampler, _coord) diff --git a/src/renderer.h b/src/renderer.h index 9e95f72ee..1beadce2f 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -283,7 +283,7 @@ namespace bgfx class StateCacheLru { public: - void add(uint64_t _key, Ty _value, uint16_t _parent) + Ty* add(uint64_t _key, const Ty& _value, uint16_t _parent) { uint16_t handle = m_alloc.alloc(); if (UINT16_MAX == handle) @@ -300,6 +300,8 @@ namespace bgfx data.m_value = _value; data.m_parent = _parent; m_hashMap.insert(stl::make_pair(_key, handle) ); + + return &m_data[handle].m_value; } Ty* find(uint64_t _key)