Skip to content

Commit

Permalink
Make maximum amount of text batches configurable via game.project.
Browse files Browse the repository at this point in the history
  • Loading branch information
ekharkunov committed Mar 26, 2024
1 parent f13e6dd commit bf5787c
Show file tree
Hide file tree
Showing 13 changed files with 20 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,10 @@ max_characters.type = number
max_characters.help = maximum number of characters (text) that can be displayed each frame
max_characters.default = 8192
max_font_batches.type = number
max_font_batches.help = maximum number of text batches
max_font_batches.default = 128
max_debug_vertices.type = number
max_debug_vertices.help = maximum number of debug vertices. Used for physics shape rendering among other things, 10000 by default
max_debug_vertices.default = 10000
Expand Down
5 changes: 5 additions & 0 deletions editor/resources/meta.edn
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,11 @@
"maximum number of characters (text) that can be displayed each frame",
:default 8192,
:path ["graphics" "max_characters"]}
{:type :integer,
:help
"maximum number of text that can be displayed each frame",
:default 128,
:path ["graphics" "max_font_batches"]}
{:type :integer,
:help
"maximum number of debug vertices, used for physics shape rendering among other things, 10000 by default",
Expand Down
1 change: 1 addition & 0 deletions engine/engine/src/engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1022,6 +1022,7 @@ namespace dmEngine
#else
render_params.m_MaxDebugVertexCount = 0;
#endif
render_params.m_MaxBatches = (uint32_t) dmConfigFile::GetInt(engine->m_Config, "graphics.max_font_batches", 128);
engine->m_RenderContext = dmRender::NewRenderContext(engine->m_GraphicsContext, render_params);

dmGameObject::Initialize(engine->m_Register, engine->m_GOScriptContext);
Expand Down
1 change: 1 addition & 0 deletions engine/gamesys/src/gamesys/test/fontview/fontview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ namespace dmFontView
render_params.m_MaxRenderTypes = 10;
render_params.m_MaxInstances = 100;
render_params.m_MaxCharacters = 1024;
render_params.m_MaxBatches = 128;
context->m_RenderContext = dmRender::NewRenderContext(context->m_GraphicsContext, render_params);
dmRender::SetViewMatrix(context->m_RenderContext, Matrix4::identity());
dmRender::SetProjectionMatrix(context->m_RenderContext, Matrix4::identity());
Expand Down
1 change: 1 addition & 0 deletions engine/gamesys/src/gamesys/test/test_gamesys.h
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,7 @@ void GamesysTest<T>::SetUp()
render_params.m_MaxRenderTargets = 10;
render_params.m_ScriptContext = m_ScriptContext;
render_params.m_MaxCharacters = 256;
render_params.m_MaxBatches = 128;
m_RenderContext = dmRender::NewRenderContext(m_GraphicsContext, render_params);

dmInput::NewContextParams input_params;
Expand Down
4 changes: 1 addition & 3 deletions engine/render/src/render/font_renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ namespace dmRender
return font_map->m_Material;
}

void InitializeTextContext(HRenderContext render_context, uint32_t max_characters)
void InitializeTextContext(HRenderContext render_context, uint32_t max_characters, uint32_t max_batches)
{
DM_STATIC_ASSERT(sizeof(GlyphVertex) % 16 == 0, Invalid_Struct_Size);
DM_STATIC_ASSERT( MAX_FONT_RENDER_CONSTANTS == MAX_TEXT_RENDER_CONSTANTS, Constant_Arrays_Must_Have_Same_Size );
Expand Down Expand Up @@ -434,8 +434,6 @@ namespace dmRender

dmGraphics::DeleteVertexStreamDeclaration(stream_declaration);

// Arbitrary number
const uint32_t max_batches = 128;
text_context.m_ConstantBuffers.SetCapacity(max_batches); // 1:1 index mapping with render object
text_context.m_RenderObjects.SetCapacity(max_batches);
text_context.m_RenderObjectIndex = 0;
Expand Down
2 changes: 1 addition & 1 deletion engine/render/src/render/font_renderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ namespace dmRender
*/
HMaterial GetFontMapMaterial(HFontMap font_map);

void InitializeTextContext(HRenderContext render_context, uint32_t max_characters);
void InitializeTextContext(HRenderContext render_context, uint32_t max_characters, uint32_t max_batches);
void FinalizeTextContext(HRenderContext render_context);

const int MAX_FONT_RENDER_CONSTANTS = 16;
Expand Down
2 changes: 1 addition & 1 deletion engine/render/src/render/render.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ namespace dmRender
InitializeDebugRenderer(context, params.m_MaxDebugVertexCount, params.m_VertexShaderDesc, params.m_VertexShaderDescSize, params.m_FragmentShaderDesc, params.m_FragmentShaderDescSize);
}

InitializeTextContext(context, params.m_MaxCharacters);
InitializeTextContext(context, params.m_MaxCharacters, params.m_MaxBatches);

context->m_OutOfResources = 0;

Expand Down
1 change: 1 addition & 0 deletions engine/render/src/render/render.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ namespace dmRender
uint32_t m_VertexShaderDescSize;
uint32_t m_FragmentShaderDescSize;
uint32_t m_MaxCharacters;
uint32_t m_MaxBatches;
uint32_t m_CommandBufferSize;
/// Max debug vertex count
/// NOTE: This is per debug-type and not the total sum
Expand Down
1 change: 1 addition & 0 deletions engine/render/src/test/test_material.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class dmRenderMaterialTest : public jc_test_base_class
m_GraphicsContext = dmGraphics::NewContext(graphics_context_params);
m_Params.m_ScriptContext = dmScript::NewContext(0, 0, true);
m_Params.m_MaxCharacters = 256;
m_Params.m_MaxBatches = 128;
m_RenderContext = dmRender::NewRenderContext(m_GraphicsContext, m_Params);
}
virtual void TearDown()
Expand Down
1 change: 1 addition & 0 deletions engine/render/src/test/test_render.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ class dmRenderTest : public jc_test_base_class
params.m_ScriptContext = m_ScriptContext;
params.m_MaxDebugVertexCount = 256;
params.m_MaxCharacters = 256;
params.m_MaxBatches = 128;
m_Context = dmRender::NewRenderContext(m_GraphicsContext, params);

dmRender::FontMapParams font_map_params;
Expand Down
1 change: 1 addition & 0 deletions engine/render/src/test/test_render_buffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class dmRenderBufferTest : public jc_test_base_class
m_GraphicsContext = dmGraphics::NewContext(graphics_context_params);
m_Params.m_ScriptContext = dmScript::NewContext(0, 0, true);
m_Params.m_MaxCharacters = 256;
m_Params.m_MaxBatches = 128;
m_RenderContext = dmRender::NewRenderContext(m_GraphicsContext, m_Params);

m_MultiBufferingRequired = m_RenderContext->m_MultiBufferingRequired;
Expand Down
1 change: 1 addition & 0 deletions engine/render/src/test/test_render_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ class dmRenderScriptTest : public jc_test_base_class
params.m_MaxRenderTargets = 1;
params.m_MaxInstances = 64;
params.m_MaxCharacters = 32;
params.m_MaxBatches = 128;
m_Context = dmRender::NewRenderContext(m_GraphicsContext, params);

dmGraphics::ShaderDesc::Shader shader_ddf;
Expand Down

0 comments on commit bf5787c

Please sign in to comment.