From 92e64510ecc8f175b03784db12110069d7e6c5ca Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Sat, 4 Aug 2018 15:58:24 +0200 Subject: [PATCH] Fixed draw frustum and draw aabb code --- .../gpu/src/gpu/DrawTransformVertexPosition.slv | 2 -- libraries/render-utils/src/RenderDeferredTask.cpp | 2 +- libraries/render/src/render/DrawTask.cpp | 12 +++++++++--- libraries/render/src/render/DrawTask.h | 3 ++- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv index cf66a615f5..7565b1ae3b 100644 --- a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv +++ b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv @@ -18,8 +18,6 @@ layout(location = 0) in vec4 inPosition; -out vec3 varWorldPos; - void main(void) { // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 8c3afc74f7..8281e1d010 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -246,7 +246,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("DrawZones", zones); const auto frustums = task.addJob("ExtractFrustums"); const auto viewFrustum = frustums.getN(ExtractFrustums::VIEW_FRUSTUM); - task.addJob("DrawViewFrustum", viewFrustum, glm::vec3(1.0f, 1.0f, 0.0f)); + task.addJob("DrawViewFrustum", viewFrustum, glm::vec3(0.0f, 1.0f, 0.0f)); for (auto i = 0; i < ExtractFrustums::SHADOW_CASCADE_FRUSTUM_COUNT; i++) { const auto shadowFrustum = frustums.getN(ExtractFrustums::SHADOW_CASCADE0_FRUSTUM + i); float tint = 1.0f - i / float(ExtractFrustums::SHADOW_CASCADE_FRUSTUM_COUNT - 1); diff --git a/libraries/render/src/render/DrawTask.cpp b/libraries/render/src/render/DrawTask.cpp index 3a7555f790..0d7139bcd0 100755 --- a/libraries/render/src/render/DrawTask.cpp +++ b/libraries/render/src/render/DrawTask.cpp @@ -220,10 +220,15 @@ void DrawBounds::run(const RenderContextPointer& renderContext, }); } +gpu::Stream::FormatPointer DrawQuadVolume::_format; + DrawQuadVolume::DrawQuadVolume(const glm::vec3& color) : _color{ color } { _meshVertices = gpu::BufferView(std::make_shared(sizeof(glm::vec3) * 8, nullptr), gpu::Element::VEC3F_XYZ); - _meshStream.addBuffer(_meshVertices._buffer, _meshVertices._offset, _meshVertices._stride); + if (!_format) { + _format = std::make_shared(); + _format->setAttribute(gpu::Stream::POSITION, gpu::Stream::POSITION, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ), 0); + } } void DrawQuadVolume::configure(const Config& configuration) { @@ -253,10 +258,11 @@ void DrawQuadVolume::run(const render::RenderContextPointer& renderContext, cons batch.setProjectionTransform(projMat); batch.setViewTransform(viewMat); batch.setPipeline(getPipeline()); - batch.setIndexBuffer(indices); batch._glUniform4f(0, _color.x, _color.y, _color.z, 1.0f); - batch.setInputStream(0, _meshStream); + batch.setInputFormat(_format); + batch.setInputBuffer(gpu::Stream::POSITION, _meshVertices); + batch.setIndexBuffer(indices); batch.drawIndexed(gpu::LINES, indexCount, 0U); args->_batch = nullptr; diff --git a/libraries/render/src/render/DrawTask.h b/libraries/render/src/render/DrawTask.h index 6f98e3bef1..a0a0a9bbac 100755 --- a/libraries/render/src/render/DrawTask.h +++ b/libraries/render/src/render/DrawTask.h @@ -97,10 +97,11 @@ protected: const gpu::BufferView& indices, int indexCount); gpu::BufferView _meshVertices; - gpu::BufferStream _meshStream; glm::vec3 _color; bool _isUpdateEnabled{ true }; + static gpu::Stream::FormatPointer _format; + static gpu::PipelinePointer getPipeline(); };