Showing the changes to libraries/render-utils/src/GeometryCache.cpp (1 of 87 files). Show all
Unified · Split
| @@ -29,6 +29,7 @@ · 28 unmodified lines | ||
| 29 | 29 | #include "gpu/StandardShaderLib.h" |
| 30 | 30 | |
| 31 | 31 | #include "model/TextureMap.h" |
| 32 | +#include "render/Args.h" | |
| 32 | 33 | |
| 33 | 34 | #include "standardTransformPNTC_vert.h" |
| 34 | 35 | #include "standardDrawTexture_frag.h" |
| @@ -513,7 +514,7 @@ void GeometryCache::initializeShapePipelines() { · 478 unmodified lines | ||
| 513 | 514 | render::ShapePipelinePointer GeometryCache::getShapePipeline(bool textured, bool transparent, bool culled, |
| 514 | 515 | bool unlit, bool depthBias, bool fading) { |
| 515 | 516 | return std::make_shared<render::ShapePipeline>(getSimplePipeline(textured, transparent, culled, unlit, depthBias, fading), nullptr, |
| 516 | − [](const render::ShapePipeline&, gpu::Batch& batch) { | |
| 517 | + [](const render::ShapePipeline&, gpu::Batch& batch, render::Args*) { | |
| 517 | 518 | // Set the defaults needed for a simple program |
| 518 | 519 | batch.setResourceTexture(render::ShapePipeline::Slot::MAP::ALBEDO, |
| 519 | 520 | DependencyManager::get<TextureCache>()->getWhiteTexture()); |
| @@ -1971,7 +1972,7 @@ uint32_t toCompactColor(const glm::vec4& color) { · 1451 unmodified lines | ||
| 1971 | 1972 | |
| 1972 | 1973 | static const size_t INSTANCE_COLOR_BUFFER = 0; |
| 1973 | 1974 | |
| 1974 | −void renderInstances(gpu::Batch& batch, const glm::vec4& color, bool isWire, | |
| 1975 | +void renderInstances(RenderArgs* args, gpu::Batch& batch, const glm::vec4& color, bool isWire, | |
| 1975 | 1976 | const render::ShapePipelinePointer& pipeline, GeometryCache::Shape shape) { |
| 1976 | 1977 | // Add pipeline to name |
| 1977 | 1978 | std::string instanceName = (isWire ? "wire_shapes_" : "solid_shapes_") + std::to_string(shape) + "_" + std::to_string(std::hash<render::ShapePipelinePointer>()(pipeline)); |
| @@ -1984,9 +1985,9 @@ void renderInstances(gpu::Batch& batch, const glm::vec4& color, bool isWire, · 6 unmodified lines | ||
| 1984 | 1985 | } |
| 1985 | 1986 | |
| 1986 | 1987 | // Add call to named buffer |
| 1987 | − batch.setupNamedCalls(instanceName, [isWire, pipeline, shape](gpu::Batch& batch, gpu::Batch::NamedBatchData& data) { | |
| 1988 | + batch.setupNamedCalls(instanceName, [args, isWire, pipeline, shape](gpu::Batch& batch, gpu::Batch::NamedBatchData& data) { | |
| 1988 | 1989 | batch.setPipeline(pipeline->pipeline); |
| 1989 | − pipeline->prepare(batch); | |
| 1990 | + pipeline->prepare(batch, args); | |
| 1990 | 1991 | |
| 1991 | 1992 | if (isWire) { |
| 1992 | 1993 | DependencyManager::get<GeometryCache>()->renderWireShapeInstances(batch, shape, data.count(), data.buffers[INSTANCE_COLOR_BUFFER]); |
| @@ -1996,32 +1997,32 @@ void renderInstances(gpu::Batch& batch, const glm::vec4& color, bool isWire, · 3 unmodified lines | ||
| 1996 | 1997 | }); |
| 1997 | 1998 | } |
| 1998 | 1999 | |
| 1999 | −void GeometryCache::renderSolidShapeInstance(gpu::Batch& batch, GeometryCache::Shape shape, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2000 | +void GeometryCache::renderSolidShapeInstance(RenderArgs* args, gpu::Batch& batch, GeometryCache::Shape shape, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2000 | 2001 | assert(pipeline != nullptr); |
| 2001 | − renderInstances(batch, color, false, pipeline, shape); | |
| 2002 | + renderInstances(args, batch, color, false, pipeline, shape); | |
| 2002 | 2003 | } |
| 2003 | 2004 | |
| 2004 | −void GeometryCache::renderWireShapeInstance(gpu::Batch& batch, GeometryCache::Shape shape, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2005 | +void GeometryCache::renderWireShapeInstance(RenderArgs* args, gpu::Batch& batch, GeometryCache::Shape shape, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2005 | 2006 | assert(pipeline != nullptr); |
| 2006 | − renderInstances(batch, color, true, pipeline, shape); | |
| 2007 | + renderInstances(args, batch, color, true, pipeline, shape); | |
| 2007 | 2008 | } |
| 2008 | 2009 | |
| 2009 | − | |
| 2010 | −void GeometryCache::renderSolidSphereInstance(gpu::Batch& batch, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2010 | +void GeometryCache::renderSolidSphereInstance(RenderArgs* args, gpu::Batch& batch, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2011 | 2011 | assert(pipeline != nullptr); |
| 2012 | − renderInstances(batch, color, false, pipeline, GeometryCache::Sphere); | |
| 2012 | + renderInstances(args, batch, color, false, pipeline, GeometryCache::Sphere); | |
| 2013 | 2013 | } |
| 2014 | 2014 | |
| 2015 | −void GeometryCache::renderWireSphereInstance(gpu::Batch& batch, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2015 | +void GeometryCache::renderWireSphereInstance(RenderArgs* args, gpu::Batch& batch, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2016 | 2016 | assert(pipeline != nullptr); |
| 2017 | − renderInstances(batch, color, true, pipeline, GeometryCache::Sphere); | |
| 2017 | + renderInstances(args, batch, color, true, pipeline, GeometryCache::Sphere); | |
| 2018 | 2018 | } |
| 2019 | 2019 | |
| 2020 | 2020 | // Enable this in a debug build to cause 'box' entities to iterate through all the |
| 2021 | 2021 | // available shape types, both solid and wireframes |
| 2022 | 2022 | //#define DEBUG_SHAPES |
| 2023 | 2023 | |
| 2024 | −void GeometryCache::renderSolidCubeInstance(gpu::Batch& batch, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2024 | + | |
| 2025 | +void GeometryCache::renderSolidCubeInstance(RenderArgs* args, gpu::Batch& batch, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2025 | 2026 | assert(pipeline != nullptr); |
| 2026 | 2027 | #ifdef DEBUG_SHAPES |
| 2027 | 2028 | static auto startTime = usecTimestampNow(); |
| @@ -2056,12 +2057,12 @@ void GeometryCache::renderSolidCubeInstance(gpu::Batch& batch, const glm::vec4& · 28 unmodified lines | ||
| 2056 | 2057 | } |
| 2057 | 2058 | }); |
| 2058 | 2059 | #else |
| 2059 | − renderInstances(batch, color, false, pipeline, GeometryCache::Cube); | |
| 2060 | + renderInstances(args, batch, color, false, pipeline, GeometryCache::Cube); | |
| 2060 | 2061 | #endif |
| 2061 | 2062 | } |
| 2062 | 2063 | |
| 2063 | −void GeometryCache::renderWireCubeInstance(gpu::Batch& batch, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2064 | +void GeometryCache::renderWireCubeInstance(RenderArgs* args, gpu::Batch& batch, const glm::vec4& color, const render::ShapePipelinePointer& pipeline) { | |
| 2064 | 2065 | static const std::string INSTANCE_NAME = __FUNCTION__; |
| 2065 | 2066 | assert(pipeline != nullptr); |
| 2066 | − renderInstances(batch, color, true, pipeline, GeometryCache::Cube); | |
| 2067 | + renderInstances(args, batch, color, true, pipeline, GeometryCache::Cube); | |
| 2067 | 2068 | } |