diff options
Diffstat (limited to 'servers/rendering/renderer_rd')
| -rw-r--r-- | servers/rendering/renderer_rd/environment/gi.cpp | 3 | ||||
| -rw-r--r-- | servers/rendering/renderer_rd/shaders/canvas.glsl | 15 | 
2 files changed, 3 insertions, 15 deletions
diff --git a/servers/rendering/renderer_rd/environment/gi.cpp b/servers/rendering/renderer_rd/environment/gi.cpp index f4a27144d9..550fe27e4c 100644 --- a/servers/rendering/renderer_rd/environment/gi.cpp +++ b/servers/rendering/renderer_rd/environment/gi.cpp @@ -2866,7 +2866,8 @@ void GI::VoxelGIInstance::update(bool p_update_light_instances, const Vector<RID  		{  			Transform3D to_cell = gi->voxel_gi_get_to_cell_xform(probe); -			Transform3D to_probe_xform = (transform * to_cell.affine_inverse()).affine_inverse(); +			Transform3D to_probe_xform = to_cell * transform.affine_inverse(); +  			//update lights  			for (uint32_t i = 0; i < light_count; i++) { diff --git a/servers/rendering/renderer_rd/shaders/canvas.glsl b/servers/rendering/renderer_rd/shaders/canvas.glsl index 4a18c7c052..8593e6b265 100644 --- a/servers/rendering/renderer_rd/shaders/canvas.glsl +++ b/servers/rendering/renderer_rd/shaders/canvas.glsl @@ -655,20 +655,7 @@ void main() {  		if (i >= light_count) {  			break;  		} -		uint light_base; -		if (i < 8) { -			if (i < 4) { -				light_base = draw_data.lights[0]; -			} else { -				light_base = draw_data.lights[1]; -			} -		} else { -			if (i < 12) { -				light_base = draw_data.lights[2]; -			} else { -				light_base = draw_data.lights[3]; -			} -		} +		uint light_base = draw_data.lights[i >> 2];  		light_base >>= (i & 3) * 8;  		light_base &= 0xFF;  |