Skip to content

Commit

Permalink
Merge pull request #84241 from jsjtxietian/fix-render-method-crash-on…
Browse files Browse the repository at this point in the history
…-bad-input

Fix bad parameter for `rendering_method` crashes Godot
  • Loading branch information
akien-mga committed Dec 4, 2023
2 parents 9108445 + b6bee1c commit 7113050
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions servers/rendering/renderer_rd/renderer_compositor_rd.cpp
Expand Up @@ -310,15 +310,16 @@ RendererCompositorRD::RendererCompositorRD() {
uint64_t textures_per_stage = RD::get_singleton()->limit_get(RD::LIMIT_MAX_TEXTURES_PER_SHADER_STAGE);

if (rendering_method == "mobile" || textures_per_stage < 48) {
scene = memnew(RendererSceneRenderImplementation::RenderForwardMobile());
if (rendering_method == "forward_plus") {
WARN_PRINT_ONCE("Platform supports less than 48 textures per stage which is less than required by the Clustered renderer. Defaulting to Mobile renderer.");
}
scene = memnew(RendererSceneRenderImplementation::RenderForwardMobile());
} else if (rendering_method == "forward_plus") {
// default to our high end renderer
scene = memnew(RendererSceneRenderImplementation::RenderForwardClustered());
} else {
ERR_FAIL_MSG("Cannot instantiate RenderingDevice-based renderer with renderer type " + rendering_method);
// Fall back to our high end renderer.
ERR_PRINT(vformat("Cannot instantiate RenderingDevice-based renderer with renderer type '%s'. Defaulting to Forward+ renderer.", rendering_method));
scene = memnew(RendererSceneRenderImplementation::RenderForwardClustered());
}

scene->init();
Expand Down

0 comments on commit 7113050

Please sign in to comment.