Hello, my question is about the difference between reflection probes of HDRP and URP. For example, when I place my reflection probe in a sunlit area in URP, I get bright spots (caused by normal map) in the shadowed areas but that’s not the case with HDRP (check the screenshots). I wonder what HDRP does to avoid this and is it possible to avoid it in URP? In general, reflections always seem a little too bright in URP imo. (Unity version 2020.3.43f1)
Both projects are almost same (SSR is disabled in HDRP, Infinite projection in both, AO disabled)
Good question, also wondering the same. I converted my project to URP and now it’s really hard to control the reflections. They always look way too bright. Is it because URP does not use a physically based rendering?
URP uses a physically based rendering most of the time but the shaders are more optimized so they don’t have advanced shading model like the HDRP. For example specular model is very different and I think it is what causes reflections to be that bright. I couldn’t find a proper solution with my limited knowledge of shader code so I implemented this into BRDF.hlsl (By moving “com.unity.render-pipelines.universal@version” folder into Packages folder of the project so it is modifiable) with the help of ChatGPT:
Find “half3 EnvironmentBRDFSpecular(BRDFData brdfData, half fresnelTerm)” function and replace it with this:
// Computes the specular term for EnvironmentBRDF
half3 EnvironmentBRDFSpecular(BRDFData brdfData, half fresnelTerm)
{
// Adjust the Fresnel term based on the roughness of the surface
// You might need to fine-tune these parameters based on your specific requirements
fresnelTerm *= 0.65 - brdfData.perceptualRoughness;
float surfaceReduction = 1.0 / (brdfData.roughness2 + 1.0);
return half3(surfaceReduction * lerp(brdfData.specular, brdfData.grazingTerm, fresnelTerm));
}
BRDF.hlsl is located at com.unity.render-pipelines.universal@version\ShaderLibrary
This calculation reduces the fresnel of the reflections in the areas of the surface that is rough.
Thanks for the answer, that seems like a good solution. I will give it a try and report back later. I wonder if someone knows a way to accomplish this without having to move the Package files into assets? This way when the project gets updated in the future to a new URP version, things won’t break.