[Bf-blender-cvs] [7b3e1149757] master: Fix T57617 Volumetrics doesn't work on the Orthographic Camera

Clément Foucault noreply at git.blender.org
Fri Mar 22 19:43:12 CET 2019


Commit: 7b3e1149757b5e67ea24a1189a2f7e43dea7f926
Author: Clément Foucault
Date:   Fri Mar 22 18:06:24 2019 +0100
Branches: master
https://developer.blender.org/rB7b3e1149757b5e67ea24a1189a2f7e43dea7f926

Fix T57617 Volumetrics doesn't work on the Orthographic Camera

common_data.view_vecs were not updated before use.

===================================================================

M	source/blender/draw/engines/eevee/eevee_materials.c
M	source/blender/draw/engines/eevee/eevee_private.h
M	source/blender/draw/engines/eevee/eevee_volumes.c

===================================================================

diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 94f484cd4d1..6b395660401 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -508,7 +508,7 @@ void EEVEE_update_noise(EEVEE_PassList *psl, EEVEE_FramebufferList *fbl, const d
 	DRW_draw_pass(psl->update_noise_pass);
 }
 
-static void EEVEE_update_viewvecs(float invproj[4][4], float winmat[4][4], float (*r_viewvecs)[4])
+void EEVEE_update_viewvecs(float invproj[4][4], float winmat[4][4], float (*r_viewvecs)[4])
 {
 	/* view vectors for the corners of the view frustum.
 	 * Can be used to recreate the world space position easily */
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 25902bce62d..f112ae0536e 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -860,6 +860,7 @@ struct GPUMaterial *EEVEE_material_hair_get(struct Scene *scene, Material *ma, i
 void EEVEE_materials_free(void);
 void EEVEE_draw_default_passes(EEVEE_PassList *psl);
 void EEVEE_update_noise(EEVEE_PassList *psl, EEVEE_FramebufferList *fbl, const double offsets[3]);
+void EEVEE_update_viewvecs(float invproj[4][4], float winmat[4][4], float (*r_viewvecs)[4]);
 
 /* eevee_lights.c */
 void EEVEE_lights_init(EEVEE_ViewLayerData *sldata);
diff --git a/source/blender/draw/engines/eevee/eevee_volumes.c b/source/blender/draw/engines/eevee/eevee_volumes.c
index 7262b3d446a..dba8f5729db 100644
--- a/source/blender/draw/engines/eevee/eevee_volumes.c
+++ b/source/blender/draw/engines/eevee/eevee_volumes.c
@@ -290,6 +290,12 @@ int EEVEE_volumes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 			common_data->vol_shadow_steps = 0;
 		}
 
+		/* Update view_vecs */
+		float invproj[4][4], winmat[4][4];
+		DRW_viewport_matrix_get(winmat, DRW_MAT_WIN);
+		DRW_viewport_matrix_get(invproj, DRW_MAT_WININV);
+		EEVEE_update_viewvecs(invproj, winmat, sldata->common_data.view_vecs);
+
 		if (DRW_viewport_is_persp_get()) {
 			float sample_distribution = scene_eval->eevee.volumetric_sample_distribution;
 			sample_distribution = 4.0f * (1.00001f - sample_distribution);



More information about the Bf-blender-cvs mailing list