diff options
Diffstat (limited to 'servers/rendering/renderer_rd/shaders')
3 files changed, 19 insertions, 56 deletions
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl index 4119e98d15..83c02d08a7 100644 --- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl +++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl @@ -1529,7 +1529,7 @@ void main() {  			float size_A = sc_use_light_soft_shadows ? directional_lights.data[i].size : 0.0; -			light_compute(normal, directional_lights.data[i].direction, normalize(view), size_A, directional_lights.data[i].color * directional_lights.data[i].energy, shadow, f0, orms, 1.0, +			light_compute(normal, directional_lights.data[i].direction, normalize(view), size_A, directional_lights.data[i].color * directional_lights.data[i].energy, shadow, f0, orms, 1.0, albedo, alpha,  #ifdef LIGHT_BACKLIGHT_USED  					backlight,  #endif @@ -1540,7 +1540,7 @@ void main() {  					transmittance_z,  #endif  #ifdef LIGHT_RIM_USED -					rim, rim_tint, albedo, +					rim, rim_tint,  #endif  #ifdef LIGHT_CLEARCOAT_USED  					clearcoat, clearcoat_gloss, @@ -1548,9 +1548,6 @@ void main() {  #ifdef LIGHT_ANISOTROPY_USED  					binormal, tangent, anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -					alpha, -#endif  					diffuse_light,  					specular_light);  		} @@ -1603,7 +1600,7 @@ void main() {  				shadow = blur_shadow(shadow); -				light_process_omni(light_index, vertex, view, normal, vertex_ddx, vertex_ddy, f0, orms, shadow, +				light_process_omni(light_index, vertex, view, normal, vertex_ddx, vertex_ddy, f0, orms, shadow, albedo, alpha,  #ifdef LIGHT_BACKLIGHT_USED  						backlight,  #endif @@ -1615,7 +1612,6 @@ void main() {  #ifdef LIGHT_RIM_USED  						rim,  						rim_tint, -						albedo,  #endif  #ifdef LIGHT_CLEARCOAT_USED  						clearcoat, clearcoat_gloss, @@ -1623,9 +1619,6 @@ void main() {  #ifdef LIGHT_ANISOTROPY_USED  						tangent, binormal, anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -						alpha, -#endif  						diffuse_light, specular_light);  			}  		} @@ -1679,7 +1672,7 @@ void main() {  				shadow = blur_shadow(shadow); -				light_process_spot(light_index, vertex, view, normal, vertex_ddx, vertex_ddy, f0, orms, shadow, +				light_process_spot(light_index, vertex, view, normal, vertex_ddx, vertex_ddy, f0, orms, shadow, albedo, alpha,  #ifdef LIGHT_BACKLIGHT_USED  						backlight,  #endif @@ -1691,7 +1684,6 @@ void main() {  #ifdef LIGHT_RIM_USED  						rim,  						rim_tint, -						albedo,  #endif  #ifdef LIGHT_CLEARCOAT_USED  						clearcoat, clearcoat_gloss, @@ -1699,9 +1691,6 @@ void main() {  #ifdef LIGHT_ANISOTROPY_USED  						tangent, binormal, anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -						alpha, -#endif  						diffuse_light, specular_light);  			}  		} diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl index b26489ddf1..d22f936a35 100644 --- a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl +++ b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl @@ -73,7 +73,7 @@ vec3 F0(float metallic, float specular, vec3 albedo) {  	return mix(vec3(dielectric), albedo, vec3(metallic));  } -void light_compute(vec3 N, vec3 L, vec3 V, float A, vec3 light_color, float attenuation, vec3 f0, uint orms, float specular_amount, +void light_compute(vec3 N, vec3 L, vec3 V, float A, vec3 light_color, float attenuation, vec3 f0, uint orms, float specular_amount, vec3 albedo, inout float alpha,  #ifdef LIGHT_BACKLIGHT_USED  		vec3 backlight,  #endif @@ -84,7 +84,7 @@ void light_compute(vec3 N, vec3 L, vec3 V, float A, vec3 light_color, float atte  		float transmittance_z,  #endif  #ifdef LIGHT_RIM_USED -		float rim, float rim_tint, vec3 rim_color, +		float rim, float rim_tint,  #endif  #ifdef LIGHT_CLEARCOAT_USED  		float clearcoat, float clearcoat_gloss, @@ -92,9 +92,6 @@ void light_compute(vec3 N, vec3 L, vec3 V, float A, vec3 light_color, float atte  #ifdef LIGHT_ANISOTROPY_USED  		vec3 B, vec3 T, float anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -		inout float alpha, -#endif  		inout vec3 diffuse_light, inout vec3 specular_light) {  	vec4 orms_unpacked = unpackUnorm4x8(orms); @@ -171,7 +168,7 @@ void light_compute(vec3 N, vec3 L, vec3 V, float A, vec3 light_color, float atte  #if defined(LIGHT_RIM_USED)  		float rim_light = pow(max(0.0, 1.0 - cNdotV), max(0.0, (1.0 - roughness) * 16.0)); -		diffuse_light += rim_light * rim * mix(vec3(1.0), rim_color, rim_tint) * light_color; +		diffuse_light += rim_light * rim * mix(vec3(1.0), albedo, rim_tint) * light_color;  #endif  #ifdef LIGHT_TRANSMITTANCE_USED @@ -577,7 +574,7 @@ float light_process_omni_shadow(uint idx, vec3 vertex, vec3 normal) {  	return 1.0;  } -void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 vertex_ddx, vec3 vertex_ddy, vec3 f0, uint orms, float shadow, +void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 vertex_ddx, vec3 vertex_ddy, vec3 f0, uint orms, float shadow, vec3 albedo, inout float alpha,  #ifdef LIGHT_BACKLIGHT_USED  		vec3 backlight,  #endif @@ -587,7 +584,7 @@ void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  		float transmittance_boost,  #endif  #ifdef LIGHT_RIM_USED -		float rim, float rim_tint, vec3 rim_color, +		float rim, float rim_tint,  #endif  #ifdef LIGHT_CLEARCOAT_USED  		float clearcoat, float clearcoat_gloss, @@ -595,9 +592,6 @@ void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  #ifdef LIGHT_ANISOTROPY_USED  		vec3 binormal, vec3 tangent, float anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -		inout float alpha, -#endif  		inout vec3 diffuse_light, inout vec3 specular_light) {  	vec3 light_rel_vec = omni_lights.data[idx].position - vertex;  	float light_length = length(light_rel_vec); @@ -703,7 +697,7 @@ void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  	light_attenuation *= shadow; -	light_compute(normal, normalize(light_rel_vec), eye_vec, size_A, color, light_attenuation, f0, orms, omni_lights.data[idx].specular_amount, +	light_compute(normal, normalize(light_rel_vec), eye_vec, size_A, color, light_attenuation, f0, orms, omni_lights.data[idx].specular_amount, albedo, alpha,  #ifdef LIGHT_BACKLIGHT_USED  			backlight,  #endif @@ -714,7 +708,7 @@ void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  			transmittance_z,  #endif  #ifdef LIGHT_RIM_USED -			rim * omni_attenuation, rim_tint, rim_color, +			rim * omni_attenuation, rim_tint,  #endif  #ifdef LIGHT_CLEARCOAT_USED  			clearcoat, clearcoat_gloss, @@ -722,9 +716,6 @@ void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  #ifdef LIGHT_ANISOTROPY_USED  			binormal, tangent, anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -			alpha, -#endif  			diffuse_light,  			specular_light);  } @@ -823,7 +814,7 @@ vec2 normal_to_panorama(vec3 n) {  	return panorama_coords;  } -void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 vertex_ddx, vec3 vertex_ddy, vec3 f0, uint orms, float shadow, +void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 vertex_ddx, vec3 vertex_ddy, vec3 f0, uint orms, float shadow, vec3 albedo, inout float alpha,  #ifdef LIGHT_BACKLIGHT_USED  		vec3 backlight,  #endif @@ -833,7 +824,7 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  		float transmittance_boost,  #endif  #ifdef LIGHT_RIM_USED -		float rim, float rim_tint, vec3 rim_color, +		float rim, float rim_tint,  #endif  #ifdef LIGHT_CLEARCOAT_USED  		float clearcoat, float clearcoat_gloss, @@ -841,9 +832,6 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  #ifdef LIGHT_ANISOTROPY_USED  		vec3 binormal, vec3 tangent, float anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -		inout float alpha, -#endif  		inout vec3 diffuse_light,  		inout vec3 specular_light) {  	vec3 light_rel_vec = spot_lights.data[idx].position - vertex; @@ -910,7 +898,7 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  	}  	light_attenuation *= shadow; -	light_compute(normal, normalize(light_rel_vec), eye_vec, size_A, color, light_attenuation, f0, orms, spot_lights.data[idx].specular_amount, +	light_compute(normal, normalize(light_rel_vec), eye_vec, size_A, color, light_attenuation, f0, orms, spot_lights.data[idx].specular_amount, albedo, alpha,  #ifdef LIGHT_BACKLIGHT_USED  			backlight,  #endif @@ -921,7 +909,7 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  			transmittance_z,  #endif  #ifdef LIGHT_RIM_USED -			rim * spot_attenuation, rim_tint, rim_color, +			rim * spot_attenuation, rim_tint,  #endif  #ifdef LIGHT_CLEARCOAT_USED  			clearcoat, clearcoat_gloss, @@ -929,9 +917,6 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v  #ifdef LIGHT_ANISOTROPY_USED  			binormal, tangent, anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -			alpha, -#endif  			diffuse_light, specular_light);  } diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl index 2f5cc58619..cfafde493b 100644 --- a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl +++ b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl @@ -1345,7 +1345,7 @@ void main() {  #endif  			blur_shadow(shadow); -			light_compute(normal, directional_lights.data[i].direction, normalize(view), 0.0, directional_lights.data[i].color * directional_lights.data[i].energy, shadow, f0, orms, 1.0, +			light_compute(normal, directional_lights.data[i].direction, normalize(view), 0.0, directional_lights.data[i].color * directional_lights.data[i].energy, shadow, f0, orms, 1.0, albedo, alpha,  #ifdef LIGHT_BACKLIGHT_USED  					backlight,  #endif @@ -1358,7 +1358,7 @@ void main() {  #endif  */  #ifdef LIGHT_RIM_USED -					rim, rim_tint, albedo, +					rim, rim_tint,  #endif  #ifdef LIGHT_CLEARCOAT_USED  					clearcoat, clearcoat_gloss, @@ -1369,9 +1369,6 @@ void main() {  #ifdef USE_SOFT_SHADOW  					directional_lights.data[i].size,  #endif -#ifdef USE_SHADOW_TO_OPACITY -					alpha, -#endif  					diffuse_light,  					specular_light);  		} @@ -1395,7 +1392,7 @@ void main() {  			shadow = blur_shadow(shadow); -			light_process_omni(light_index, vertex, view, normal, vertex_ddx, vertex_ddy, f0, orms, shadow, +			light_process_omni(light_index, vertex, view, normal, vertex_ddx, vertex_ddy, f0, orms, shadow, albedo, alpha,  #ifdef LIGHT_BACKLIGHT_USED  					backlight,  #endif @@ -1409,7 +1406,6 @@ void main() {  #ifdef LIGHT_RIM_USED  					rim,  					rim_tint, -					albedo,  #endif  #ifdef LIGHT_CLEARCOAT_USED  					clearcoat, clearcoat_gloss, @@ -1417,9 +1413,6 @@ void main() {  #ifdef LIGHT_ANISOTROPY_USED  					tangent, binormal, anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -					alpha, -#endif  					diffuse_light, specular_light);  		}  	} //omni lights @@ -1443,7 +1436,7 @@ void main() {  			shadow = blur_shadow(shadow); -			light_process_spot(light_index, vertex, view, normal, vertex_ddx, vertex_ddy, f0, orms, shadow, +			light_process_spot(light_index, vertex, view, normal, vertex_ddx, vertex_ddy, f0, orms, shadow, albedo, alpha,  #ifdef LIGHT_BACKLIGHT_USED  					backlight,  #endif @@ -1457,7 +1450,6 @@ void main() {  #ifdef LIGHT_RIM_USED  					rim,  					rim_tint, -					albedo,  #endif  #ifdef LIGHT_CLEARCOAT_USED  					clearcoat, clearcoat_gloss, @@ -1465,9 +1457,6 @@ void main() {  #ifdef LIGHT_ANISOTROPY_USED  					tangent, binormal, anisotropy,  #endif -#ifdef USE_SHADOW_TO_OPACITY -					alpha, -#endif  					diffuse_light, specular_light);  		}  	} //spot lights  |