From bda01bb3a5ba3e3d6395cb9e0d456470968ee7be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 9 Jun 2021 12:36:35 +0200 Subject: [PATCH] Shaders: benchmark Phong with 64 lights but just 5 used. Should be roughly the same perf as one with 5 set statically. --- src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp b/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp index e9ae264d3..5ec5d80f3 100644 --- a/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp +++ b/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp @@ -197,6 +197,7 @@ const struct { {"UBO single, ADS texture arrays + transformation", PhongGL::Flag::UniformBuffers|PhongGL::Flag::AmbientTexture|PhongGL::Flag::DiffuseTexture|PhongGL::Flag::SpecularTexture|PhongGL::Flag::TextureArrays|PhongGL::Flag::TextureTransformation, 1, 1, 1}, {"UBO multi, one light", PhongGL::Flag::UniformBuffers, 1, 32, 128}, {"multidraw, one light", PhongGL::Flag::MultiDraw, 1, 32, 128}, + {"multidraw, 64 lights, five used", PhongGL::Flag::MultiDraw, 64, 32, 128}, #endif }; @@ -694,7 +695,10 @@ void ShadersGLBenchmark::phong() { ProjectionUniform3D{} }}; transformationUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; - drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; + Containers::Array drawData{data.drawCount}; + drawData[0].lightCount = 5; /* Cap at 5 lights, even if more is set */ + drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, drawData}; + Containers::Array materialData{data.materialCount}; materialData[0] /* White ambient so we always have a white output */