Make Overdraw, Lighting and Shadow Splits debug draw modes ignore decals
This also makes the Overdraw and Shadow Splits debug draw modes ignore fog.
The Lighting debug draw mode still displays fog as that debug draw mode
is intended to preview scene lighting, and fog has an impact on how
lighting is perceived.
(cherry picked from commit 26a220bd31
)
This commit is contained in:
parent
51d7ffde6d
commit
562613ac37
|
@ -3419,7 +3419,7 @@ RasterizerSceneGLES3::RasterizerSceneGLES3() {
|
|||
scene_globals.default_shader = material_storage->shader_allocate();
|
||||
material_storage->shader_initialize(scene_globals.default_shader);
|
||||
material_storage->shader_set_code(scene_globals.default_shader, R"(
|
||||
// Default 3D material shader.
|
||||
// Default 3D material shader (Compatibility).
|
||||
|
||||
shader_type spatial;
|
||||
|
||||
|
@ -3444,11 +3444,11 @@ void fragment() {
|
|||
scene_globals.overdraw_shader = material_storage->shader_allocate();
|
||||
material_storage->shader_initialize(scene_globals.overdraw_shader);
|
||||
material_storage->shader_set_code(scene_globals.overdraw_shader, R"(
|
||||
// 3D editor Overdraw debug draw mode shader.
|
||||
// 3D editor Overdraw debug draw mode shader (Compatibility).
|
||||
|
||||
shader_type spatial;
|
||||
|
||||
render_mode blend_add, unshaded;
|
||||
render_mode blend_add, unshaded, fog_disabled;
|
||||
|
||||
void fragment() {
|
||||
ALBEDO = vec3(0.4, 0.8, 0.8);
|
||||
|
|
|
@ -739,7 +739,7 @@ void SceneShaderForwardClustered::init(const String p_defines) {
|
|||
default_shader = material_storage->shader_allocate();
|
||||
material_storage->shader_initialize(default_shader);
|
||||
material_storage->shader_set_code(default_shader, R"(
|
||||
// Default 3D material shader (clustered).
|
||||
// Default 3D material shader (Forward+).
|
||||
|
||||
shader_type spatial;
|
||||
|
||||
|
@ -770,11 +770,11 @@ void fragment() {
|
|||
material_storage->shader_initialize(overdraw_material_shader);
|
||||
// Use relatively low opacity so that more "layers" of overlapping objects can be distinguished.
|
||||
material_storage->shader_set_code(overdraw_material_shader, R"(
|
||||
// 3D editor Overdraw debug draw mode shader (clustered).
|
||||
// 3D editor Overdraw debug draw mode shader (Forward+).
|
||||
|
||||
shader_type spatial;
|
||||
|
||||
render_mode blend_add, unshaded;
|
||||
render_mode blend_add, unshaded, fog_disabled;
|
||||
|
||||
void fragment() {
|
||||
ALBEDO = vec3(0.4, 0.8, 0.8);
|
||||
|
@ -794,11 +794,11 @@ void fragment() {
|
|||
debug_shadow_splits_material_shader = material_storage->shader_allocate();
|
||||
material_storage->shader_initialize(debug_shadow_splits_material_shader);
|
||||
material_storage->shader_set_code(debug_shadow_splits_material_shader, R"(
|
||||
// 3D debug shadow splits mode shader(mobile).
|
||||
// 3D debug shadow splits mode shader (Forward+).
|
||||
|
||||
shader_type spatial;
|
||||
|
||||
render_mode debug_shadow_splits;
|
||||
render_mode debug_shadow_splits, fog_disabled;
|
||||
|
||||
void fragment() {
|
||||
ALBEDO = vec3(1.0, 1.0, 1.0);
|
||||
|
|
|
@ -643,7 +643,7 @@ void SceneShaderForwardMobile::init(const String p_defines) {
|
|||
default_shader = material_storage->shader_allocate();
|
||||
material_storage->shader_initialize(default_shader);
|
||||
material_storage->shader_set_code(default_shader, R"(
|
||||
// Default 3D material shader (mobile).
|
||||
// Default 3D material shader (Mobile).
|
||||
|
||||
shader_type spatial;
|
||||
|
||||
|
@ -673,11 +673,11 @@ void fragment() {
|
|||
material_storage->shader_initialize(overdraw_material_shader);
|
||||
// Use relatively low opacity so that more "layers" of overlapping objects can be distinguished.
|
||||
material_storage->shader_set_code(overdraw_material_shader, R"(
|
||||
// 3D editor Overdraw debug draw mode shader (mobile).
|
||||
// 3D editor Overdraw debug draw mode shader (Mobile).
|
||||
|
||||
shader_type spatial;
|
||||
|
||||
render_mode blend_add, unshaded;
|
||||
render_mode blend_add, unshaded, fog_disabled;
|
||||
|
||||
void fragment() {
|
||||
ALBEDO = vec3(0.4, 0.8, 0.8);
|
||||
|
@ -698,11 +698,11 @@ void fragment() {
|
|||
material_storage->shader_initialize(debug_shadow_splits_material_shader);
|
||||
// Use relatively low opacity so that more "layers" of overlapping objects can be distinguished.
|
||||
material_storage->shader_set_code(debug_shadow_splits_material_shader, R"(
|
||||
// 3D debug shadow splits mode shader(mobile).
|
||||
// 3D debug shadow splits mode shader (Mobile).
|
||||
|
||||
shader_type spatial;
|
||||
|
||||
render_mode debug_shadow_splits;
|
||||
render_mode debug_shadow_splits, fog_disabled;
|
||||
|
||||
void fragment() {
|
||||
ALBEDO = vec3(1.0, 1.0, 1.0);
|
||||
|
|
|
@ -1092,12 +1092,19 @@ void RendererSceneRenderRD::render_scene(const Ref<RenderSceneBuffers> &p_render
|
|||
|
||||
PagedArray<RID> empty;
|
||||
|
||||
if (get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_UNSHADED) {
|
||||
if (get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_UNSHADED || get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_OVERDRAW) {
|
||||
render_data.lights = ∅
|
||||
render_data.reflection_probes = ∅
|
||||
render_data.voxel_gi_instances = ∅
|
||||
}
|
||||
|
||||
if (get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_UNSHADED ||
|
||||
get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_OVERDRAW ||
|
||||
get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_LIGHTING ||
|
||||
get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_PSSM_SPLITS) {
|
||||
render_data.decals = ∅
|
||||
}
|
||||
|
||||
Color clear_color;
|
||||
if (p_render_buffers.is_valid() && p_reflection_probe.is_null()) {
|
||||
clear_color = texture_storage->render_target_get_clear_request_color(rb->get_render_target());
|
||||
|
|
Loading…
Reference in New Issue