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.
This commit is contained in:
parent
aef11a1427
commit
26a220bd31
4 changed files with 21 additions and 14 deletions
|
@ -4075,7 +4075,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;
|
||||
|
||||
|
@ -4100,11 +4100,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);
|
||||
|
|
|
@ -737,7 +737,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;
|
||||
|
||||
|
@ -768,11 +768,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);
|
||||
|
@ -792,11 +792,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);
|
||||
|
|
|
@ -641,7 +641,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;
|
||||
|
||||
|
@ -671,11 +671,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);
|
||||
|
@ -696,11 +696,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);
|
||||
|
|
|
@ -1153,12 +1153,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 a new issue