mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #2914 from wwylele/fresnel-fix
pica/lighting: only apply Fresnel factor for the last light
This commit is contained in:
		
						commit
						ff4941fb3a
					
				@ -751,7 +751,8 @@ static void WriteLighting(std::string& out, const PicaShaderConfig& config) {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Fresnel
 | 
			
		||||
        if (lighting.lut_fr.enable &&
 | 
			
		||||
        // Note: only the last entry in the light slots applies the Fresnel factor
 | 
			
		||||
        if (light_index == lighting.src_num - 1 && lighting.lut_fr.enable &&
 | 
			
		||||
            LightingRegs::IsLightingSamplerSupported(lighting.config,
 | 
			
		||||
                                                     LightingRegs::LightingSampler::Fresnel)) {
 | 
			
		||||
            // Lookup fresnel LUT value
 | 
			
		||||
@ -760,17 +761,17 @@ static void WriteLighting(std::string& out, const PicaShaderConfig& config) {
 | 
			
		||||
                            lighting.lut_fr.type, lighting.lut_fr.abs_input);
 | 
			
		||||
            value = "(" + std::to_string(lighting.lut_fr.scale) + " * " + value + ")";
 | 
			
		||||
 | 
			
		||||
            // Enabled for difffuse lighting alpha component
 | 
			
		||||
            // Enabled for diffuse lighting alpha component
 | 
			
		||||
            if (lighting.fresnel_selector == LightingRegs::LightingFresnelSelector::PrimaryAlpha ||
 | 
			
		||||
                lighting.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) {
 | 
			
		||||
                out += "diffuse_sum.a  *= " + value + ";\n";
 | 
			
		||||
                out += "diffuse_sum.a = " + value + ";\n";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Enabled for the specular lighting alpha component
 | 
			
		||||
            if (lighting.fresnel_selector ==
 | 
			
		||||
                    LightingRegs::LightingFresnelSelector::SecondaryAlpha ||
 | 
			
		||||
                lighting.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) {
 | 
			
		||||
                out += "specular_sum.a *= " + value + ";\n";
 | 
			
		||||
                out += "specular_sum.a = " + value + ";\n";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -230,7 +230,8 @@ std::tuple<Math::Vec4<u8>, Math::Vec4<u8>> ComputeFragmentsColors(
 | 
			
		||||
            d1_lut_value * refl_value * light_config.specular_1.ToVec3f();
 | 
			
		||||
 | 
			
		||||
        // Fresnel
 | 
			
		||||
        if (lighting.config1.disable_lut_fr == 0 &&
 | 
			
		||||
        // Note: only the last entry in the light slots applies the Fresnel factor
 | 
			
		||||
        if (light_index == lighting.max_light_index && lighting.config1.disable_lut_fr == 0 &&
 | 
			
		||||
            LightingRegs::IsLightingSamplerSupported(lighting.config0.config,
 | 
			
		||||
                                                     LightingRegs::LightingSampler::Fresnel)) {
 | 
			
		||||
 | 
			
		||||
@ -242,14 +243,14 @@ std::tuple<Math::Vec4<u8>, Math::Vec4<u8>> ComputeFragmentsColors(
 | 
			
		||||
            if (lighting.config0.fresnel_selector ==
 | 
			
		||||
                    LightingRegs::LightingFresnelSelector::PrimaryAlpha ||
 | 
			
		||||
                lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) {
 | 
			
		||||
                diffuse_sum.a() *= lut_value;
 | 
			
		||||
                diffuse_sum.a() = lut_value;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Enabled for the specular lighting alpha component
 | 
			
		||||
            if (lighting.config0.fresnel_selector ==
 | 
			
		||||
                    LightingRegs::LightingFresnelSelector::SecondaryAlpha ||
 | 
			
		||||
                lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) {
 | 
			
		||||
                specular_sum.a() *= lut_value;
 | 
			
		||||
                specular_sum.a() = lut_value;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user