diff --git a/examples/21-deferred/common.sh b/examples/21-deferred/common.sh index 4588f6964..fcb93f2c0 100644 --- a/examples/21-deferred/common.sh +++ b/examples/21-deferred/common.sh @@ -47,11 +47,11 @@ vec3 calcLight(vec3 _wpos, vec3 _normal, vec3 _view, vec3 _lightPos, float _ligh float toClipSpaceDepth(float _depthTextureZ) { -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL - return _depthTextureZ; -#else +#if BGFX_SHADER_LANGUAGE_GLSL return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#else + return _depthTextureZ; +#endif // BGFX_SHADER_LANGUAGE_GLSL } vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) diff --git a/examples/21-deferred/deferred.cpp b/examples/21-deferred/deferred.cpp index 8f7054746..5727fc8d7 100644 --- a/examples/21-deferred/deferred.cpp +++ b/examples/21-deferred/deferred.cpp @@ -12,11 +12,11 @@ namespace { -#define RENDER_PASS_GEOMETRY_ID 0 -#define RENDER_PASS_LIGHT_ID 1 -#define RENDER_PASS_COMBINE_ID 2 -#define RENDER_PASS_DEBUG_LIGHTS_ID 3 -#define RENDER_PASS_DEBUG_GBUFFER_ID 4 +constexpr bgfx::ViewId kRenderPassGeometry = 0; +constexpr bgfx::ViewId kRenderPassLight = 1; +constexpr bgfx::ViewId kRenderPassCombine = 2; +constexpr bgfx::ViewId kRenderPassDebugLights = 3; +constexpr bgfx::ViewId kRenderPassDebugGBuffer = 4; static float s_texelHalf = 0.0f; @@ -225,7 +225,7 @@ public: bgfx::setPaletteColor(1, UINT32_C(0x303030ff) ); // Set geometry pass view clear state. - bgfx::setViewClear(RENDER_PASS_GEOMETRY_ID + bgfx::setViewClear(kRenderPassGeometry , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH , 1.0f , 0 @@ -233,7 +233,7 @@ public: ); // Set light pass view clear state. - bgfx::setViewClear(RENDER_PASS_LIGHT_ID + bgfx::setViewClear(kRenderPassLight , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH , 1.0f , 0 @@ -561,19 +561,19 @@ public: float vp[16]; float invMvp[16]; { - bgfx::setViewRect(RENDER_PASS_GEOMETRY_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewRect(RENDER_PASS_LIGHT_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewRect(RENDER_PASS_COMBINE_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewRect(RENDER_PASS_DEBUG_LIGHTS_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewRect(RENDER_PASS_DEBUG_GBUFFER_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassGeometry, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassLight, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassCombine, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassDebugLights, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassDebugGBuffer, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewFrameBuffer(RENDER_PASS_LIGHT_ID, m_lightBuffer); + bgfx::setViewFrameBuffer(kRenderPassLight, m_lightBuffer); float proj[16]; bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f, m_caps->homogeneousDepth); - bgfx::setViewFrameBuffer(RENDER_PASS_GEOMETRY_ID, m_gbuffer); - bgfx::setViewTransform(RENDER_PASS_GEOMETRY_ID, view, proj); + bgfx::setViewFrameBuffer(kRenderPassGeometry, m_gbuffer); + bgfx::setViewTransform(kRenderPassGeometry, view, proj); bx::mtxMul(vp, view, proj); bx::mtxInverse(invMvp, vp); @@ -581,16 +581,16 @@ public: const bgfx::Caps* caps = bgfx::getCaps(); bx::mtxOrtho(proj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 100.0f, 0.0f, caps->homogeneousDepth); - bgfx::setViewTransform(RENDER_PASS_LIGHT_ID, NULL, proj); - bgfx::setViewTransform(RENDER_PASS_COMBINE_ID, NULL, proj); + bgfx::setViewTransform(kRenderPassLight, NULL, proj); + bgfx::setViewTransform(kRenderPassCombine, NULL, proj); const float aspectRatio = float(m_height)/float(m_width); const float size = 10.0f; bx::mtxOrtho(proj, -size, size, size*aspectRatio, -size*aspectRatio, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); - bgfx::setViewTransform(RENDER_PASS_DEBUG_GBUFFER_ID, NULL, proj); + bgfx::setViewTransform(kRenderPassDebugGBuffer, NULL, proj); bx::mtxOrtho(proj, 0.0f, (float)m_width, 0.0f, (float)m_height, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); - bgfx::setViewTransform(RENDER_PASS_DEBUG_LIGHTS_ID, NULL, proj); + bgfx::setViewTransform(kRenderPassDebugLights, NULL, proj); } const uint32_t dim = 11; @@ -635,7 +635,7 @@ public: ); // Submit primitive for rendering to view 0. - bgfx::submit(RENDER_PASS_GEOMETRY_ID, m_geomProgram); + bgfx::submit(kRenderPassGeometry, m_geomProgram); } } @@ -647,7 +647,7 @@ public: | BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A ); - bgfx::submit(RENDER_PASS_LIGHT_ID, m_clearUavProgram); + bgfx::submit(kRenderPassLight, m_clearUavProgram); } // Draw lights into light buffer. @@ -744,7 +744,7 @@ public: | BGFX_STATE_PT_LINES | BGFX_STATE_BLEND_ALPHA ); - bgfx::submit(RENDER_PASS_DEBUG_LIGHTS_ID, m_lineProgram); + bgfx::submit(kRenderPassDebugLights, m_lineProgram); } } @@ -771,17 +771,20 @@ public: | BGFX_STATE_BLEND_ADD ); screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, m_caps->originBottomLeft); - if (bgfx::isValid(m_lightTaProgram) && m_useTArray) + + if (bgfx::isValid(m_lightTaProgram) + && m_useTArray) { - bgfx::submit(RENDER_PASS_LIGHT_ID, m_lightTaProgram); + bgfx::submit(kRenderPassLight, m_lightTaProgram); } - else if (bgfx::isValid(m_lightUavProgram) && m_useUav) + else if (bgfx::isValid(m_lightUavProgram) + && m_useUav) { - bgfx::submit(RENDER_PASS_LIGHT_ID, m_lightUavProgram); + bgfx::submit(kRenderPassLight, m_lightUavProgram); } else { - bgfx::submit(RENDER_PASS_LIGHT_ID, m_lightProgram); + bgfx::submit(kRenderPassLight, m_lightProgram); } } } @@ -794,7 +797,7 @@ public: | BGFX_STATE_WRITE_A ); screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, m_caps->originBottomLeft); - bgfx::submit(RENDER_PASS_COMBINE_ID, m_combineProgram); + bgfx::submit(kRenderPassCombine, m_combineProgram); if (m_showGBuffer) { @@ -815,7 +818,7 @@ public: bgfx::setIndexBuffer(m_ibh, 0, 6); bgfx::setTexture(0, s_texColor, m_gbufferTex[ii]); bgfx::setState(BGFX_STATE_WRITE_RGB); - bgfx::submit(RENDER_PASS_DEBUG_GBUFFER_ID, m_debugProgram); + bgfx::submit(kRenderPassDebugGBuffer, m_debugProgram); } } } diff --git a/examples/21-deferred/fs_deferred_clear_uav.sc b/examples/21-deferred/fs_deferred_clear_uav.sc index 4340099a0..6fd797a03 100644 --- a/examples/21-deferred/fs_deferred_clear_uav.sc +++ b/examples/21-deferred/fs_deferred_clear_uav.sc @@ -8,10 +8,10 @@ $input v_texcoord0 #include "common.sh" #include -IMAGE2D_RW(s_lights, rgba8, 1); +FRAMEBUFFER_IMAGE2D_RW(s_light, rgba8, 0); void main() { ivec2 coord = ivec2(gl_FragCoord.xy); - imageStore(s_lights, coord, vec4(0.0, 0.0, 0.0, 0.0)); + imageStore(s_light, coord, vec4(0.0, 0.0, 0.0, 0.0)); } diff --git a/examples/21-deferred/fs_deferred_light.sc b/examples/21-deferred/fs_deferred_light.sc index 4857c663a..e5e34c37a 100644 --- a/examples/21-deferred/fs_deferred_light.sc +++ b/examples/21-deferred/fs_deferred_light.sc @@ -21,9 +21,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_PSSL || BGFX_SHADER_LANGUAGE_METAL +#if !BGFX_SHADER_LANGUAGE_GLSL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#endif // !BGFX_SHADER_LANGUAGE_GLSL vec3 wpos = clipToWorld(u_mtx, clip); vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; diff --git a/examples/21-deferred/fs_deferred_light_ta.sc b/examples/21-deferred/fs_deferred_light_ta.sc index 9313b655a..4fb575401 100644 --- a/examples/21-deferred/fs_deferred_light_ta.sc +++ b/examples/21-deferred/fs_deferred_light_ta.sc @@ -21,9 +21,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_PSSL || BGFX_SHADER_LANGUAGE_METAL +#if !BGFX_SHADER_LANGUAGE_GLSL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#endif // !BGFX_SHADER_LANGUAGE_GLSL vec3 wpos = clipToWorld(u_mtx, clip); vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; diff --git a/examples/21-deferred/fs_deferred_light_uav.sc b/examples/21-deferred/fs_deferred_light_uav.sc index 87d43368f..a12872a6a 100644 --- a/examples/21-deferred/fs_deferred_light_uav.sc +++ b/examples/21-deferred/fs_deferred_light_uav.sc @@ -11,7 +11,7 @@ $input v_texcoord0 SAMPLER2D(s_normal, 0); SAMPLER2D(s_depth, 1); -IMAGE2D_RW(s_lights, rgba8, 1); +FRAMEBUFFER_IMAGE2D_RW(s_light, rgba8, 0); uniform vec4 u_lightPosRadius[1]; uniform vec4 u_lightRgbInnerR[1]; @@ -24,17 +24,17 @@ void main() float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(v_texcoord0 * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#if !BGFX_SHADER_LANGUAGE_GLSL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#endif // !BGFX_SHADER_LANGUAGE_GLSL vec3 wpos = clipToWorld(u_mtx, clip); vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; view = -normalize(view); ivec2 coord = ivec2(gl_FragCoord.xy); - + vec3 lightColor = calcLight(wpos, normal, view, u_lightPosRadius[0].xyz, u_lightPosRadius[0].w, u_lightRgbInnerR[0].xyz, u_lightRgbInnerR[0].w); - vec4 color = imageLoad(s_lights, coord); - imageStore(s_lights, coord, color + vec4(toGamma(lightColor.xyz), 1.0)); + vec4 color = imageLoad(s_light, coord); + imageStore(s_light, coord, color + vec4(toGamma(lightColor.xyz), 1.0)); } diff --git a/examples/runtime/shaders/dx11/fs_deferred_clear_uav.bin b/examples/runtime/shaders/dx11/fs_deferred_clear_uav.bin index 0cdabef5f..7c52d20af 100644 Binary files a/examples/runtime/shaders/dx11/fs_deferred_clear_uav.bin and b/examples/runtime/shaders/dx11/fs_deferred_clear_uav.bin differ diff --git a/examples/runtime/shaders/dx11/fs_deferred_combine.bin b/examples/runtime/shaders/dx11/fs_deferred_combine.bin index d1fa77c8a..81b873d3d 100644 Binary files a/examples/runtime/shaders/dx11/fs_deferred_combine.bin and b/examples/runtime/shaders/dx11/fs_deferred_combine.bin differ diff --git a/examples/runtime/shaders/dx11/fs_deferred_debug.bin b/examples/runtime/shaders/dx11/fs_deferred_debug.bin index 12ee53584..9abe1572e 100644 Binary files a/examples/runtime/shaders/dx11/fs_deferred_debug.bin and b/examples/runtime/shaders/dx11/fs_deferred_debug.bin differ diff --git a/examples/runtime/shaders/dx11/fs_deferred_debug_line.bin b/examples/runtime/shaders/dx11/fs_deferred_debug_line.bin index 2b9f62d1e..f586b169f 100644 Binary files a/examples/runtime/shaders/dx11/fs_deferred_debug_line.bin and b/examples/runtime/shaders/dx11/fs_deferred_debug_line.bin differ diff --git a/examples/runtime/shaders/dx11/fs_deferred_geom.bin b/examples/runtime/shaders/dx11/fs_deferred_geom.bin index c6e5ac999..f3779ffc2 100644 Binary files a/examples/runtime/shaders/dx11/fs_deferred_geom.bin and b/examples/runtime/shaders/dx11/fs_deferred_geom.bin differ diff --git a/examples/runtime/shaders/dx11/fs_deferred_light.bin b/examples/runtime/shaders/dx11/fs_deferred_light.bin index e6ccaeca9..2636b4d01 100644 Binary files a/examples/runtime/shaders/dx11/fs_deferred_light.bin and b/examples/runtime/shaders/dx11/fs_deferred_light.bin differ diff --git a/examples/runtime/shaders/dx11/fs_deferred_light_ta.bin b/examples/runtime/shaders/dx11/fs_deferred_light_ta.bin index fc51f3424..0d4d5af59 100644 Binary files a/examples/runtime/shaders/dx11/fs_deferred_light_ta.bin and b/examples/runtime/shaders/dx11/fs_deferred_light_ta.bin differ diff --git a/examples/runtime/shaders/dx11/fs_deferred_light_uav.bin b/examples/runtime/shaders/dx11/fs_deferred_light_uav.bin index 6991d1120..9b9892a1f 100644 Binary files a/examples/runtime/shaders/dx11/fs_deferred_light_uav.bin and b/examples/runtime/shaders/dx11/fs_deferred_light_uav.bin differ diff --git a/examples/runtime/shaders/dx11/vs_deferred_combine.bin b/examples/runtime/shaders/dx11/vs_deferred_combine.bin index 8df2a6c91..c9e2fc315 100644 Binary files a/examples/runtime/shaders/dx11/vs_deferred_combine.bin and b/examples/runtime/shaders/dx11/vs_deferred_combine.bin differ diff --git a/examples/runtime/shaders/dx11/vs_deferred_debug.bin b/examples/runtime/shaders/dx11/vs_deferred_debug.bin index 8df2a6c91..c9e2fc315 100644 Binary files a/examples/runtime/shaders/dx11/vs_deferred_debug.bin and b/examples/runtime/shaders/dx11/vs_deferred_debug.bin differ diff --git a/examples/runtime/shaders/dx11/vs_deferred_debug_line.bin b/examples/runtime/shaders/dx11/vs_deferred_debug_line.bin index ab87c4d38..f8ba1c7fe 100644 Binary files a/examples/runtime/shaders/dx11/vs_deferred_debug_line.bin and b/examples/runtime/shaders/dx11/vs_deferred_debug_line.bin differ diff --git a/examples/runtime/shaders/dx11/vs_deferred_geom.bin b/examples/runtime/shaders/dx11/vs_deferred_geom.bin index 8f0f9a6b8..5a82b7f05 100644 Binary files a/examples/runtime/shaders/dx11/vs_deferred_geom.bin and b/examples/runtime/shaders/dx11/vs_deferred_geom.bin differ diff --git a/examples/runtime/shaders/dx11/vs_deferred_light.bin b/examples/runtime/shaders/dx11/vs_deferred_light.bin index 8df2a6c91..c9e2fc315 100644 Binary files a/examples/runtime/shaders/dx11/vs_deferred_light.bin and b/examples/runtime/shaders/dx11/vs_deferred_light.bin differ diff --git a/examples/runtime/shaders/glsl/fs_deferred_clear_uav.bin b/examples/runtime/shaders/glsl/fs_deferred_clear_uav.bin index 38ddde3e0..aa5b1aaca 100644 Binary files a/examples/runtime/shaders/glsl/fs_deferred_clear_uav.bin and b/examples/runtime/shaders/glsl/fs_deferred_clear_uav.bin differ diff --git a/examples/runtime/shaders/glsl/fs_deferred_combine.bin b/examples/runtime/shaders/glsl/fs_deferred_combine.bin index 1307504d0..886f2d088 100644 Binary files a/examples/runtime/shaders/glsl/fs_deferred_combine.bin and b/examples/runtime/shaders/glsl/fs_deferred_combine.bin differ diff --git a/examples/runtime/shaders/glsl/fs_deferred_debug.bin b/examples/runtime/shaders/glsl/fs_deferred_debug.bin index 2d87b63a2..26a480b17 100644 Binary files a/examples/runtime/shaders/glsl/fs_deferred_debug.bin and b/examples/runtime/shaders/glsl/fs_deferred_debug.bin differ diff --git a/examples/runtime/shaders/glsl/fs_deferred_debug_line.bin b/examples/runtime/shaders/glsl/fs_deferred_debug_line.bin index 9d60f8720..357d409cb 100644 Binary files a/examples/runtime/shaders/glsl/fs_deferred_debug_line.bin and b/examples/runtime/shaders/glsl/fs_deferred_debug_line.bin differ diff --git a/examples/runtime/shaders/glsl/fs_deferred_geom.bin b/examples/runtime/shaders/glsl/fs_deferred_geom.bin index 2036d69c9..43c37cad9 100644 Binary files a/examples/runtime/shaders/glsl/fs_deferred_geom.bin and b/examples/runtime/shaders/glsl/fs_deferred_geom.bin differ diff --git a/examples/runtime/shaders/glsl/fs_deferred_light.bin b/examples/runtime/shaders/glsl/fs_deferred_light.bin index abacd3657..fd669aa59 100644 Binary files a/examples/runtime/shaders/glsl/fs_deferred_light.bin and b/examples/runtime/shaders/glsl/fs_deferred_light.bin differ diff --git a/examples/runtime/shaders/glsl/fs_deferred_light_ta.bin b/examples/runtime/shaders/glsl/fs_deferred_light_ta.bin index d67f0098f..57a8f69ff 100644 Binary files a/examples/runtime/shaders/glsl/fs_deferred_light_ta.bin and b/examples/runtime/shaders/glsl/fs_deferred_light_ta.bin differ diff --git a/examples/runtime/shaders/glsl/fs_deferred_light_uav.bin b/examples/runtime/shaders/glsl/fs_deferred_light_uav.bin index ddee28a5b..b0a5578bc 100644 Binary files a/examples/runtime/shaders/glsl/fs_deferred_light_uav.bin and b/examples/runtime/shaders/glsl/fs_deferred_light_uav.bin differ diff --git a/examples/runtime/shaders/glsl/vs_deferred_combine.bin b/examples/runtime/shaders/glsl/vs_deferred_combine.bin index 16256a7f9..1f587f25a 100644 Binary files a/examples/runtime/shaders/glsl/vs_deferred_combine.bin and b/examples/runtime/shaders/glsl/vs_deferred_combine.bin differ diff --git a/examples/runtime/shaders/glsl/vs_deferred_debug.bin b/examples/runtime/shaders/glsl/vs_deferred_debug.bin index 16256a7f9..1f587f25a 100644 Binary files a/examples/runtime/shaders/glsl/vs_deferred_debug.bin and b/examples/runtime/shaders/glsl/vs_deferred_debug.bin differ diff --git a/examples/runtime/shaders/glsl/vs_deferred_debug_line.bin b/examples/runtime/shaders/glsl/vs_deferred_debug_line.bin index 150f27f52..1e6f1decf 100644 Binary files a/examples/runtime/shaders/glsl/vs_deferred_debug_line.bin and b/examples/runtime/shaders/glsl/vs_deferred_debug_line.bin differ diff --git a/examples/runtime/shaders/glsl/vs_deferred_geom.bin b/examples/runtime/shaders/glsl/vs_deferred_geom.bin index c0b72c63d..086b2d916 100644 Binary files a/examples/runtime/shaders/glsl/vs_deferred_geom.bin and b/examples/runtime/shaders/glsl/vs_deferred_geom.bin differ diff --git a/examples/runtime/shaders/glsl/vs_deferred_light.bin b/examples/runtime/shaders/glsl/vs_deferred_light.bin index 16256a7f9..1f587f25a 100644 Binary files a/examples/runtime/shaders/glsl/vs_deferred_light.bin and b/examples/runtime/shaders/glsl/vs_deferred_light.bin differ