History

Add basic DebugDeferredBuffer job

Atlante45 committed 10 years ago

Commit baf93e81 parent 19a503a9 files · +155 −14Browse files

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

Unified · Split

libraries/render-utils/src/DebugDeferredBuffer.cpp+72−0
@@ -0,0 +1,72 @@
1//
2// DebugDeferredBuffer.cpp
3// libraries/render-utils/src
4//
5// Created by Clement on 12/3/15.
6// Copyright 2015 High Fidelity, Inc.
7//
8// Distributed under the Apache License, Version 2.0.
9// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10//
11
12#include "DebugDeferredBuffer.h"
13
14#include <gpu/Batch.h>
15#include <gpu/Context.h>
16#include <render/Scene.h>
17#include <ViewFrustum.h>
18
19#include "GeometryCache.h"
20
21#include "debug_deferred_buffer_vert.h"
22#include "debug_deferred_buffer_frag.h"
23
24using namespace render;
25
26const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline() {
27 if (!_pipeline) {
28 auto vs = gpu::ShaderPointer(gpu::Shader::createVertex({ debug_deferred_buffer_vert }));
29 auto ps = gpu::ShaderPointer(gpu::Shader::createPixel({ debug_deferred_buffer_frag }));
30 auto program = gpu::ShaderPointer(gpu::Shader::createProgram(vs, ps));
31
32
33 gpu::Shader::BindingSet slotBindings;
34 gpu::Shader::makeProgram(*program, slotBindings);
35
36 auto state = std::make_shared<gpu::State>();
37
38 state->setDepthTest(false, false, gpu::LESS_EQUAL);
39
40 // Blend on transparent
41 state->setBlendFunction(true,
42 gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA);
43
44 // Good to go add the brand new pipeline
45 _pipeline.reset(gpu::Pipeline::create(program, state));
46 }
47 return _pipeline;
48}
49
50
51void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext) {
52 assert(renderContext->args);
53 assert(renderContext->args->_viewFrustum);
54 RenderArgs* args = renderContext->args;
55 gpu::doInBatch(args->_context, [&](gpu::Batch& batch) {
56
57 glm::mat4 projMat;
58 Transform viewMat;
59 args->_viewFrustum->evalProjectionMatrix(projMat);
60 args->_viewFrustum->evalViewTransform(viewMat);
61 batch.setProjectionTransform(projMat);
62 batch.setViewTransform(viewMat);
63 batch.setModelTransform(Transform());
64
65 batch.setPipeline(getPipeline());
66
67 glm::vec4 color(0.0f, 0.0f, 1.0f, 1.0f);
68 glm::vec2 bottomLeft(0.0f, -1.0f);
69 glm::vec2 topRight(1.0f, 1.0f);
70 DependencyManager::get<GeometryCache>()->renderQuad(batch, bottomLeft, topRight, color);
71 });
72}