GLES3: Slight optimization to irradiance compute
All the calculations leading up to `mipLevel` are only relevant for Panorama mode. Similarly, the `source_resolution` uniform is only needed for that mode.
This commit is contained in:
parent
e8dc581bfc
commit
dc4db4ab45
2 changed files with 2 additions and 6 deletions
|
@ -1955,7 +1955,6 @@ void RasterizerStorageGLES3::sky_set_texture(RID p_sky, RID p_panorama, int p_ra
|
|||
glActiveTexture(GL_TEXTURE0);
|
||||
glBindTexture(GL_TEXTURE_2D_ARRAY, sky->radiance);
|
||||
shaders.cubemap_filter.set_uniform(CubemapFilterShaderGLES3::SOURCE_ARRAY_INDEX, j - 1); //read from previous to ensure better blur
|
||||
shaders.cubemap_filter.set_uniform(CubemapFilterShaderGLES3::SOURCE_RESOLUTION, float(size / 2));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
|
@ -2085,7 +2084,6 @@ void RasterizerStorageGLES3::sky_set_texture(RID p_sky, RID p_panorama, int p_ra
|
|||
glActiveTexture(GL_TEXTURE0);
|
||||
glBindTexture(GL_TEXTURE_2D, sky->radiance);
|
||||
shaders.cubemap_filter.set_uniform(CubemapFilterShaderGLES3::SOURCE_MIP_LEVEL, float(lod - 1)); //read from previous to ensure better blur
|
||||
shaders.cubemap_filter.set_uniform(CubemapFilterShaderGLES3::SOURCE_RESOLUTION, float(size));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
|
|
|
@ -23,6 +23,7 @@ precision highp int;
|
|||
|
||||
#ifdef USE_SOURCE_PANORAMA
|
||||
uniform sampler2D source_panorama; //texunit:0
|
||||
uniform float source_resolution;
|
||||
#endif
|
||||
|
||||
#ifdef USE_SOURCE_DUAL_PARABOLOID_ARRAY
|
||||
|
@ -44,7 +45,6 @@ uniform samplerCube source_cube; //texunit:0
|
|||
|
||||
uniform int face_id;
|
||||
uniform float roughness;
|
||||
uniform float source_resolution;
|
||||
|
||||
in highp vec2 uv_interp;
|
||||
|
||||
|
@ -332,6 +332,7 @@ void main() {
|
|||
|
||||
if (ndotl > 0.0) {
|
||||
|
||||
#ifdef USE_SOURCE_PANORAMA
|
||||
float D = DistributionGGX(N, H, roughness);
|
||||
float ndoth = max(dot(N, H), 0.0);
|
||||
float hdotv = max(dot(H, V), 0.0);
|
||||
|
@ -342,17 +343,14 @@ void main() {
|
|||
|
||||
float mipLevel = roughness == 0.0 ? 0.0 : 0.5 * log2(saSample / saTexel);
|
||||
|
||||
#ifdef USE_SOURCE_PANORAMA
|
||||
sum.rgb += texturePanorama(L, source_panorama, mipLevel).rgb * ndotl;
|
||||
#endif
|
||||
|
||||
#ifdef USE_SOURCE_DUAL_PARABOLOID_ARRAY
|
||||
|
||||
sum.rgb += textureDualParaboloidArray(L).rgb * ndotl;
|
||||
#endif
|
||||
|
||||
#ifdef USE_SOURCE_DUAL_PARABOLOID
|
||||
|
||||
sum.rgb += textureDualParaboloid(L).rgb * ndotl;
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue