@@ -1323,18 +1323,22 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
13231323 }
13241324
13251325 code += data_type_name + " (" + node_code + " , " + sampler_name + " )" ;
1326- } else if (actions. check_multiview_samplers && correct_texture_uniform && RS::get_singleton ()->is_low_end ()) {
1326+ } else if (correct_texture_uniform && RS::get_singleton ()->is_low_end ()) {
13271327 // Texture function on low end hardware (i.e. OpenGL).
1328- // We just need to know if the texture supports multiview.
13291328
13301329 if (shader->uniforms .has (texture_uniform)) {
13311330 const ShaderLanguage::ShaderNode::Uniform &u = shader->uniforms [texture_uniform];
1331+ if (actions.check_multiview_samplers ) {
1332+ if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_SCREEN_TEXTURE) {
1333+ multiview_uv_needed = true ;
1334+ } else if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_DEPTH_TEXTURE) {
1335+ multiview_uv_needed = true ;
1336+ } else if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_NORMAL_ROUGHNESS_TEXTURE) {
1337+ multiview_uv_needed = true ;
1338+ }
1339+ }
13321340 if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_SCREEN_TEXTURE) {
1333- multiview_uv_needed = true ;
1334- } else if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_DEPTH_TEXTURE) {
1335- multiview_uv_needed = true ;
1336- } else if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_NORMAL_ROUGHNESS_TEXTURE) {
1337- multiview_uv_needed = true ;
1341+ is_screen_texture = true ;
13381342 }
13391343 }
13401344
@@ -1353,7 +1357,11 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
13531357 }
13541358 code += " )" ;
13551359 if (is_screen_texture && !texture_func_returns_data && actions.apply_luminance_multiplier ) {
1356- code = " (" + code + " * vec4(vec3(sc_luminance_multiplier()), 1.0))" ;
1360+ if (RS::get_singleton ()->is_low_end ()) {
1361+ code = " (" + code + " / vec4(vec3(scene_data_block.data.luminance_multiplier), 1.0))" ;
1362+ } else {
1363+ code = " (" + code + " * vec4(vec3(sc_luminance_multiplier()), 1.0))" ;
1364+ }
13571365 }
13581366 if (is_normal_roughness_texture && !texture_func_returns_data) {
13591367 code = " normal_roughness_compatibility(" + code + " )" ;
0 commit comments