History

Prepare shadowMap pipeline to debug in color

Zach Pomerantz committed 10 years ago

Commit 7744b891 parent b9b407f5 files · +62 −23Browse files

Showing the changes to libraries/render-utils/src/DebugDeferredBuffer.cpp (1 of 5 files). Show all

Unified · Split

libraries/render-utils/src/DebugDeferredBuffer.cpp+31−18
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020
2121 #include "GeometryCache.h"
2222 #include "FramebufferCache.h"
23+#include "DeferredLightingEffect.h"
2324
2425 #include "debug_deferred_buffer_vert.h"
2526 #include "debug_deferred_buffer_frag.h"
@@ -31,45 +32,53 @@ enum Slots { · 5 unmodified lines
3132 Normal,
3233 Specular,
3334 Depth,
34− Lighting
35+ Lighting,
36+ Shadow
3537 };
3638
37−static const std::string DEEFAULT_DIFFUSE_SHADER {
39+static const std::string DEFAULT_DIFFUSE_SHADER {
3840 "vec4 getFragmentColor() {"
3941 " return vec4(pow(texture(diffuseMap, uv).xyz, vec3(1.0 / 2.2)), 1.0);"
4042 " }"
4143 };
42−static const std::string DEEFAULT_ALPHA_SHADER {
44+static const std::string DEFAULT_ALPHA_SHADER {
4345 "vec4 getFragmentColor() {"
4446 " return vec4(vec3(texture(diffuseMap, uv).a), 1.0);"
4547 " }"
4648 };
47−static const std::string DEEFAULT_SPECULAR_SHADER {
49+static const std::string DEFAULT_SPECULAR_SHADER {
4850 "vec4 getFragmentColor() {"
4951 " return vec4(texture(specularMap, uv).xyz, 1.0);"
5052 " }"
5153 };
52−static const std::string DEEFAULT_ROUGHNESS_SHADER {
54+static const std::string DEFAULT_ROUGHNESS_SHADER {
5355 "vec4 getFragmentColor() {"
5456 " return vec4(vec3(texture(specularMap, uv).a), 1.0);"
5557 " }"
5658 };
57−static const std::string DEEFAULT_NORMAL_SHADER {
59+static const std::string DEFAULT_NORMAL_SHADER {
5860 "vec4 getFragmentColor() {"
5961 " return vec4(normalize(texture(normalMap, uv).xyz), 1.0);"
6062 " }"
6163 };
62−static const std::string DEEFAULT_DEPTH_SHADER {
64+static const std::string DEFAULT_DEPTH_SHADER {
6365 "vec4 getFragmentColor() {"
6466 " return vec4(vec3(texture(depthMap, uv).x), 1.0);"
6567 " }"
6668 };
67−static const std::string DEEFAULT_LIGHTING_SHADER {
69+static const std::string DEFAULT_LIGHTING_SHADER {
6870 "vec4 getFragmentColor() {"
6971 " return vec4(pow(texture(lightingMap, uv).xyz, vec3(1.0 / 2.2)), 1.0);"
7072 " }"
7173 };
72−static const std::string DEEFAULT_CUSTOM_SHADER {
74+static const std::string DEFAULT_SHADOW_SHADER {
75+ "uniform sampler2D shadowMapColor;"
76+ // The actual shadowMap is a sampler2DShadow, so we cannot normally sample it
77+ "vec4 getFragmentColor() {"
78+ " return vec4(texture(shadowMapColor, uv).xyz, 1.0);"
79+ " }"
80+};
81+static const std::string DEFAULT_CUSTOM_SHADER {
7382 "vec4 getFragmentColor() {"
7483 " return vec4(1.0, 0.0, 0.0, 1.0);"
7584 " }"
@@ -98,21 +107,23 @@ DebugDeferredBuffer::DebugDeferredBuffer() { · 22 unmodified lines
98107 std::string DebugDeferredBuffer::getShaderSourceCode(Modes mode, std::string customFile) {
99108 switch (mode) {
100109 case DiffuseMode:
101− return DEEFAULT_DIFFUSE_SHADER;
110+ return DEFAULT_DIFFUSE_SHADER;
102111 case AlphaMode:
103− return DEEFAULT_ALPHA_SHADER;
112+ return DEFAULT_ALPHA_SHADER;
104113 case SpecularMode:
105− return DEEFAULT_SPECULAR_SHADER;
114+ return DEFAULT_SPECULAR_SHADER;
106115 case RoughnessMode:
107− return DEEFAULT_ROUGHNESS_SHADER;
116+ return DEFAULT_ROUGHNESS_SHADER;
108117 case NormalMode:
109− return DEEFAULT_NORMAL_SHADER;
118+ return DEFAULT_NORMAL_SHADER;
110119 case DepthMode:
111− return DEEFAULT_DEPTH_SHADER;
120+ return DEFAULT_DEPTH_SHADER;
112121 case LightingMode:
113− return DEEFAULT_LIGHTING_SHADER;
122+ return DEFAULT_LIGHTING_SHADER;
123+ case ShadowMode:
124+ return DEFAULT_SHADOW_SHADER;
114125 case CustomMode:
115− return getFileContent(customFile, DEEFAULT_CUSTOM_SHADER);
126+ return getFileContent(customFile, DEFAULT_CUSTOM_SHADER);
116127 }
117128 Q_UNREACHABLE();
118129 return std::string();
@@ -158,6 +169,7 @@ const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline(Modes mode, std::st · 39 unmodified lines
158169 slotBindings.insert(gpu::Shader::Binding("specularMap", Specular));
159170 slotBindings.insert(gpu::Shader::Binding("depthMap", Depth));
160171 slotBindings.insert(gpu::Shader::Binding("lightingMap", Lighting));
172+ slotBindings.insert(gpu::Shader::Binding("shadowMapColor", Shadow));
161173 gpu::Shader::makeProgram(*program, slotBindings);
162174
163175 auto pipeline = gpu::Pipeline::create(program, std::make_shared<gpu::State>());
@@ -193,7 +205,7 @@ void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const Ren · 29 unmodified lines
193205 gpu::doInBatch(args->_context, [&](gpu::Batch& batch) {
194206 const auto geometryBuffer = DependencyManager::get<GeometryCache>();
195207 const auto framebufferCache = DependencyManager::get<FramebufferCache>();
196−
208+ const auto& lightStage = DependencyManager::get<DeferredLightingEffect>()->getLightStage();
197209
198210 glm::mat4 projMat;
199211 Transform viewMat;
@@ -213,6 +225,7 @@ void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const Ren · 13 unmodified lines
213225 batch.setResourceTexture(Specular, framebufferCache->getDeferredSpecularTexture());
214226 batch.setResourceTexture(Depth, framebufferCache->getPrimaryDepthTexture());
215227 batch.setResourceTexture(Lighting, framebufferCache->getLightingTexture());
228+ batch.setResourceTexture(Shadow, lightStage.lights[0]->shadow.framebuffer->getRenderBuffer(0));
216229
217230 const glm::vec4 color(1.0f, 1.0f, 1.0f, 1.0f);
218231 const glm::vec2 bottomLeft(renderContext->_deferredDebugSize.x, renderContext->_deferredDebugSize.y);