Showing the changes to libraries/render-utils/src/DebugDeferredBuffer.cpp (1 of 5 files). Show all
Unified · Split
| @@ -60,7 +60,8 @@ enum TextureSlot { · 59 unmodified lines | |||
| 60 | enum ParamSlot { | 60 | enum ParamSlot { |
| 61 | CameraCorrection = 0, | 61 | CameraCorrection = 0, |
| 62 | DeferredFrameTransform, | 62 | DeferredFrameTransform, |
| 63 | ShadowTransform | 63 | ShadowTransform, |
| 64 | DebugParametersBuffer | ||
| 64 | }; | 65 | }; |
| 65 | 66 | ||
| 66 | static const std::string DEFAULT_ALBEDO_SHADER { | 67 | static const std::string DEFAULT_ALBEDO_SHADER { |
| @@ -139,13 +140,11 @@ static const std::string DEFAULT_LIGHTING_SHADER { · 72 unmodified lines | |||
| 139 | " }" | 140 | " }" |
| 140 | }; | 141 | }; |
| 141 | 142 | ||
| 142 | static const std::string DEFAULT_SHADOW_SHADER{ | 143 | static const std::string DEFAULT_SHADOW_DEPTH_SHADER{ |
| 143 | "uniform sampler2DArrayShadow shadowMaps;" | ||
| 144 | "uniform int shadowCascadeIndex;" | ||
| 145 | "vec4 getFragmentColor() {" | 144 | "vec4 getFragmentColor() {" |
| 146 | " for (int i = 255; i >= 0; --i) {" | 145 | " for (int i = 255; i >= 0; --i) {" |
| 147 | " float depth = i / 255.0;" | 146 | " float depth = i / 255.0;" |
| 148 | " if (texture(shadowMaps, vec4(uv, shadowCascadeIndex, depth)) > 0.5) {" | 147 | " if (texture(shadowMaps, vec4(uv, parameters._shadowCascadeIndex, depth)) > 0.5) {" |
| 149 | " return vec4(vec3(depth), 1.0);" | 148 | " return vec4(vec3(depth), 1.0);" |
| 150 | " }" | 149 | " }" |
| 151 | " }" | 150 | " }" |
| @@ -324,7 +323,7 @@ std::string DebugDeferredBuffer::getShaderSourceCode(Mode mode, std::string cust · 172 unmodified lines | |||
| 324 | case ShadowCascade1Mode: | 323 | case ShadowCascade1Mode: |
| 325 | case ShadowCascade2Mode: | 324 | case ShadowCascade2Mode: |
| 326 | case ShadowCascade3Mode: | 325 | case ShadowCascade3Mode: |
| 327 | return DEFAULT_SHADOW_SHADER; | 326 | return DEFAULT_SHADOW_DEPTH_SHADER; |
| 328 | case ShadowCascadeIndicesMode: | 327 | case ShadowCascadeIndicesMode: |
| 329 | return DEFAULT_SHADOW_CASCADE_SHADER; | 328 | return DEFAULT_SHADOW_CASCADE_SHADER; |
| 330 | case LinearDepthMode: | 329 | case LinearDepthMode: |
| @@ -397,6 +396,7 @@ const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline(Mode mode, std::str · 66 unmodified lines | |||
| 397 | slotBindings.insert(gpu::Shader::Binding("cameraCorrectionBuffer", CameraCorrection)); | 396 | slotBindings.insert(gpu::Shader::Binding("cameraCorrectionBuffer", CameraCorrection)); |
| 398 | slotBindings.insert(gpu::Shader::Binding("deferredFrameTransformBuffer", DeferredFrameTransform)); | 397 | slotBindings.insert(gpu::Shader::Binding("deferredFrameTransformBuffer", DeferredFrameTransform)); |
| 399 | slotBindings.insert(gpu::Shader::Binding("shadowTransformBuffer", ShadowTransform)); | 398 | slotBindings.insert(gpu::Shader::Binding("shadowTransformBuffer", ShadowTransform)); |
| 399 | slotBindings.insert(gpu::Shader::Binding("parametersBuffer", DebugParametersBuffer)); | ||
| 400 | 400 | ||
| 401 | slotBindings.insert(gpu::Shader::Binding("albedoMap", Albedo)); | 401 | slotBindings.insert(gpu::Shader::Binding("albedoMap", Albedo)); |
| 402 | slotBindings.insert(gpu::Shader::Binding("normalMap", Normal)); | 402 | slotBindings.insert(gpu::Shader::Binding("normalMap", Normal)); |
| @@ -433,8 +433,11 @@ const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline(Mode mode, std::str · 30 unmodified lines | |||
| 433 | } | 433 | } |
| 434 | 434 | ||
| 435 | void DebugDeferredBuffer::configure(const Config& config) { | 435 | void DebugDeferredBuffer::configure(const Config& config) { |
| 436 | auto& parameters = _parameters.edit(); | ||
| 437 | |||
| 436 | _mode = (Mode)config.mode; | 438 | _mode = (Mode)config.mode; |
| 437 | _size = config.size; | 439 | _size = config.size; |
| 440 | parameters._shadowCascadeIndex = glm::clamp(_mode - Mode::ShadowCascade0Mode, 0, (int)SHADOW_CASCADE_MAX_COUNT - 1); | ||
| 438 | } | 441 | } |
| 439 | 442 | ||
| 440 | void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const Inputs& inputs) { | 443 | void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const Inputs& inputs) { |
| @@ -484,18 +487,15 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I · 43 unmodified lines | |||
| 484 | batch.setResourceTexture(Velocity, velocityFramebuffer->getVelocityTexture()); | 487 | batch.setResourceTexture(Velocity, velocityFramebuffer->getVelocityTexture()); |
| 485 | } | 488 | } |
| 486 | 489 | ||
| 490 | batch.setUniformBuffer(DebugParametersBuffer, _parameters); | ||
| 491 | |||
| 487 | auto lightStage = renderContext->_scene->getStage<LightStage>(); | 492 | auto lightStage = renderContext->_scene->getStage<LightStage>(); |
| 488 | assert(lightStage); | 493 | assert(lightStage); |
| 489 | assert(lightStage->getNumLights() > 0); | 494 | assert(lightStage->getNumLights() > 0); |
| 490 | auto lightAndShadow = lightStage->getCurrentKeyLightAndShadow(); | 495 | auto lightAndShadow = lightStage->getCurrentKeyLightAndShadow(); |
| 491 | const auto& globalShadow = lightAndShadow.second; | 496 | const auto& globalShadow = lightAndShadow.second; |
| 492 | if (globalShadow) { | 497 | if (globalShadow) { |
| 493 | const auto cascadeIndex = glm::clamp(_mode - Mode::ShadowCascade0Mode, 0, (int)globalShadow->getCascadeCount() - 1); | ||
| 494 | const auto cascadeIndexLocation = pipeline->getProgram()->getUniforms().findLocation("shadowCascadeIndex"); | ||
| 495 | batch.setResourceTexture(Shadow, globalShadow->map); | 498 | batch.setResourceTexture(Shadow, globalShadow->map); |
| 496 | if (cascadeIndexLocation >= 0) { | ||
| 497 | batch._glUniform1i(cascadeIndexLocation, cascadeIndex); | ||
| 498 | } | ||
| 499 | batch.setUniformBuffer(ShadowTransform, globalShadow->getBuffer()); | 499 | batch.setUniformBuffer(ShadowTransform, globalShadow->getBuffer()); |
| 500 | batch.setUniformBuffer(DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); | 500 | batch.setUniformBuffer(DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); |
| 501 | } | 501 | } |