|
@@ -134,7 +134,7 @@ vec3 EnvDFGPolynomial( vec3 specularColor, float roughness, float ndotv ){
|
|
|
|
|
|
vec3 ApproximateSpecularIBL(samplerCube envMap,sampler2D integrateBRDF, vec3 SpecularColor , float Roughness, float ndotv, vec3 refVec){
|
|
vec3 ApproximateSpecularIBL(samplerCube envMap,sampler2D integrateBRDF, vec3 SpecularColor , float Roughness, float ndotv, vec3 refVec){
|
|
//TODO magic values should be replaced by defines.
|
|
//TODO magic values should be replaced by defines.
|
|
- float Lod = log2(Roughness) * 1.2 + 6.0 - 1.0;
|
|
|
|
|
|
+ float Lod = log2(Roughness) * 1.5 + 6.0 - 1.0;
|
|
vec3 PrefilteredColor = textureCubeLod(envMap, refVec.xyz,Lod).rgb;
|
|
vec3 PrefilteredColor = textureCubeLod(envMap, refVec.xyz,Lod).rgb;
|
|
vec2 EnvBRDF = texture2D(integrateBRDF,vec2(Roughness, ndotv)).rg;
|
|
vec2 EnvBRDF = texture2D(integrateBRDF,vec2(Roughness, ndotv)).rg;
|
|
return PrefilteredColor * ( SpecularColor * EnvBRDF.x+ EnvBRDF.y );
|
|
return PrefilteredColor * ( SpecularColor * EnvBRDF.x+ EnvBRDF.y );
|
|
@@ -142,7 +142,7 @@ vec3 ApproximateSpecularIBL(samplerCube envMap,sampler2D integrateBRDF, vec3 Spe
|
|
|
|
|
|
vec3 ApproximateSpecularIBLPolynomial(samplerCube envMap, vec3 SpecularColor , float Roughness, float ndotv, vec3 refVec){
|
|
vec3 ApproximateSpecularIBLPolynomial(samplerCube envMap, vec3 SpecularColor , float Roughness, float ndotv, vec3 refVec){
|
|
//TODO magic values should be replaced by defines.
|
|
//TODO magic values should be replaced by defines.
|
|
- float Lod = log2(Roughness) * 1.2 + 6.0 - 1.0;
|
|
|
|
|
|
+ float Lod = log2(Roughness) * 1.5 + 6.0 - 1.0;
|
|
vec3 PrefilteredColor = textureCubeLod(envMap, refVec.xyz,Lod).rgb;
|
|
vec3 PrefilteredColor = textureCubeLod(envMap, refVec.xyz,Lod).rgb;
|
|
return PrefilteredColor * EnvDFGPolynomial(SpecularColor, Roughness, ndotv);
|
|
return PrefilteredColor * EnvDFGPolynomial(SpecularColor, Roughness, ndotv);
|
|
}
|
|
}
|