Showing the changes to libraries/render-utils/src/DebugDeferredBuffer.cpp (1 of 16 files). Show all
Unified · Split
| @@ -48,6 +48,8 @@ enum Slot { · 47 unmodified lines | |||
| 48 | Shadow, | 48 | Shadow, |
| 49 | Pyramid, | 49 | Pyramid, |
| 50 | Curvature, | 50 | Curvature, |
| 51 | DiffusedCurvature, | ||
| 52 | Scattering, | ||
| 51 | AmbientOcclusion, | 53 | AmbientOcclusion, |
| 52 | AmbientOcclusionBlurred | 54 | AmbientOcclusionBlurred |
| 53 | }; | 55 | }; |
| @@ -147,6 +149,21 @@ static const std::string DEFAULT_CURVATURE_SHADER{ · 93 unmodified lines | |||
| 147 | " }" | 149 | " }" |
| 148 | }; | 150 | }; |
| 149 | 151 | ||
| 152 | static const std::string DEFAULT_NORMAL_CURVATURE_SHADER{ | ||
| 153 | "vec4 getFragmentColor() {" | ||
| 154 | //" return vec4(pow(vec3(texture(curvatureMap, uv).a), vec3(1.0 / 2.2)), 1.0);" | ||
| 155 | " return vec4(pow(vec3(texture(curvatureMap, uv).xyz), vec3(1.0 / 2.2)), 1.0);" | ||
| 156 | //" return vec4(vec3(1.0 - textureLod(pyramidMap, uv, 3).x * 0.01), 1.0);" | ||
| 157 | " }" | ||
| 158 | }; | ||
| 159 | |||
| 160 | static const std::string DEFAULT_SCATTERING_SHADER{ | ||
| 161 | "vec4 getFragmentColor() {" | ||
| 162 | // " return vec4(pow(vec3(texture(scatteringMap, uv).xyz), vec3(1.0 / 2.2)), 1.0);" | ||
| 163 | " return vec4(vec3(texture(scatteringMap, uv).xyz), 1.0);" | ||
| 164 | " }" | ||
| 165 | }; | ||
| 166 | |||
| 150 | static const std::string DEFAULT_AMBIENT_OCCLUSION_SHADER{ | 167 | static const std::string DEFAULT_AMBIENT_OCCLUSION_SHADER{ |
| 151 | "vec4 getFragmentColor() {" | 168 | "vec4 getFragmentColor() {" |
| 152 | " return vec4(vec3(texture(obscuranceMap, uv).x), 1.0);" | 169 | " return vec4(vec3(texture(obscuranceMap, uv).x), 1.0);" |
| @@ -214,6 +231,10 @@ std::string DebugDeferredBuffer::getShaderSourceCode(Mode mode, std::string cust · 61 unmodified lines | |||
| 214 | return DEFAULT_PYRAMID_DEPTH_SHADER; | 231 | return DEFAULT_PYRAMID_DEPTH_SHADER; |
| 215 | case CurvatureMode: | 232 | case CurvatureMode: |
| 216 | return DEFAULT_CURVATURE_SHADER; | 233 | return DEFAULT_CURVATURE_SHADER; |
| 234 | case NormalCurvatureMode: | ||
| 235 | return DEFAULT_NORMAL_CURVATURE_SHADER; | ||
| 236 | case ScatteringMode: | ||
| 237 | return DEFAULT_SCATTERING_SHADER; | ||
| 217 | case AmbientOcclusionMode: | 238 | case AmbientOcclusionMode: |
| 218 | return DEFAULT_AMBIENT_OCCLUSION_SHADER; | 239 | return DEFAULT_AMBIENT_OCCLUSION_SHADER; |
| 219 | case AmbientOcclusionBlurredMode: | 240 | case AmbientOcclusionBlurredMode: |
| @@ -269,6 +290,8 @@ const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline(Mode mode, std::str · 49 unmodified lines | |||
| 269 | slotBindings.insert(gpu::Shader::Binding("shadowMap", Shadow)); | 290 | slotBindings.insert(gpu::Shader::Binding("shadowMap", Shadow)); |
| 270 | slotBindings.insert(gpu::Shader::Binding("pyramidMap", Pyramid)); | 291 | slotBindings.insert(gpu::Shader::Binding("pyramidMap", Pyramid)); |
| 271 | slotBindings.insert(gpu::Shader::Binding("curvatureMap", Curvature)); | 292 | slotBindings.insert(gpu::Shader::Binding("curvatureMap", Curvature)); |
| 293 | slotBindings.insert(gpu::Shader::Binding("diffusedCurvatureMap", DiffusedCurvature)); | ||
| 294 | slotBindings.insert(gpu::Shader::Binding("scatteringMap", Scattering)); | ||
| 272 | slotBindings.insert(gpu::Shader::Binding("occlusionBlurredMap", AmbientOcclusionBlurred)); | 295 | slotBindings.insert(gpu::Shader::Binding("occlusionBlurredMap", AmbientOcclusionBlurred)); |
| 273 | gpu::Shader::makeProgram(*program, slotBindings); | 296 | gpu::Shader::makeProgram(*program, slotBindings); |
| 274 | 297 | ||
| @@ -294,11 +317,13 @@ void DebugDeferredBuffer::configure(const Config& config) { · 19 unmodified lines | |||
| 294 | _size = config.size; | 317 | _size = config.size; |
| 295 | } | 318 | } |
| 296 | 319 | ||
| 297 | void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext) { | 320 | void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, const gpu::FramebufferPointer& inputBuffer) { |
| 298 | assert(renderContext->args); | 321 | assert(renderContext->args); |
| 299 | assert(renderContext->args->hasViewFrustum()); | 322 | assert(renderContext->args->hasViewFrustum()); |
| 300 | RenderArgs* args = renderContext->args; | 323 | RenderArgs* args = renderContext->args; |
| 301 | 324 | ||
| 325 | auto& scatteringFramebuffer = inputBuffer; | ||
| 326 | |||
| 302 | gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { | 327 | gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { |
| 303 | batch.enableStereo(false); | 328 | batch.enableStereo(false); |
| 304 | batch.setViewportTransform(args->_viewport); | 329 | batch.setViewportTransform(args->_viewport); |
| @@ -329,6 +354,8 @@ void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const Ren · 24 unmodified lines | |||
| 329 | batch.setResourceTexture(Shadow, lightStage.lights[0]->shadow.framebuffer->getDepthStencilBuffer()); | 354 | batch.setResourceTexture(Shadow, lightStage.lights[0]->shadow.framebuffer->getDepthStencilBuffer()); |
| 330 | batch.setResourceTexture(Pyramid, framebufferCache->getDepthPyramidTexture()); | 355 | batch.setResourceTexture(Pyramid, framebufferCache->getDepthPyramidTexture()); |
| 331 | batch.setResourceTexture(Curvature, framebufferCache->getCurvatureTexture()); | 356 | batch.setResourceTexture(Curvature, framebufferCache->getCurvatureTexture()); |
| 357 | //batch.setResourceTexture(DiffusedCurvature, diffusedCurvatureBuffer); | ||
| 358 | batch.setResourceTexture(Scattering, scatteringFramebuffer->getRenderBuffer(0)); | ||
| 332 | if (DependencyManager::get<DeferredLightingEffect>()->isAmbientOcclusionEnabled()) { | 359 | if (DependencyManager::get<DeferredLightingEffect>()->isAmbientOcclusionEnabled()) { |
| 333 | batch.setResourceTexture(AmbientOcclusion, framebufferCache->getOcclusionTexture()); | 360 | batch.setResourceTexture(AmbientOcclusion, framebufferCache->getOcclusionTexture()); |
| 334 | } else { | 361 | } else { |