Commit: 82957cfec8818b97b1c91b2c36b6efd585f0ab3b
Author: Clément Foucault
Date:   Sat Mar 10 00:00:04 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB82957cfec8818b97b1c91b2c36b6efd585f0ab3b

Eevee: Make use of the new view matrix UBO.

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

M       source/blender/draw/engines/eevee/eevee_lightprobes.c
M       source/blender/draw/engines/eevee/eevee_materials.c
M       source/blender/draw/engines/eevee/eevee_mist.c
M       source/blender/draw/engines/eevee/eevee_occlusion.c
M       source/blender/draw/engines/eevee/eevee_screen_raytrace.c
M       source/blender/draw/engines/eevee/eevee_subsurface.c
M       source/blender/draw/engines/eevee/eevee_volumes.c
M       source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl
M       
source/blender/draw/engines/eevee/shaders/lightprobe_cube_display_vert.glsl
M       
source/blender/draw/engines/eevee/shaders/lightprobe_grid_display_vert.glsl
M       
source/blender/draw/engines/eevee/shaders/lightprobe_planar_display_frag.glsl
M       
source/blender/draw/engines/eevee/shaders/lightprobe_planar_display_vert.glsl
M       source/blender/gpu/shaders/gpu_shader_material.glsl

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

diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c 
b/source/blender/draw/engines/eevee/eevee_lightprobes.c
index 229f4d45606..b8e4e52befe 100644
--- a/source/blender/draw/engines/eevee/eevee_lightprobes.c
+++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c
@@ -109,6 +109,7 @@ extern char datatoc_lightprobe_lib_glsl[];
 extern char datatoc_octahedron_lib_glsl[];
 extern char datatoc_bsdf_common_lib_glsl[];
 extern char datatoc_common_uniforms_lib_glsl[];
+extern char datatoc_common_view_lib_glsl[];
 extern char datatoc_bsdf_sampling_lib_glsl[];
 
 extern GlobalsUboStorage ts;
@@ -205,8 +206,10 @@ static void lightprobe_shaders_init(void)
                                     "#define NOISE_SIZE 64\n";
 
        char *shader_str = NULL;
+       char *vert_str = NULL;
 
        shader_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
                datatoc_common_uniforms_lib_glsl,
                datatoc_bsdf_common_lib_glsl,
                datatoc_bsdf_sampling_lib_glsl,
@@ -221,6 +224,7 @@ static void lightprobe_shaders_init(void)
        MEM_freeN(shader_str);
 
        shader_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
                datatoc_common_uniforms_lib_glsl,
                datatoc_bsdf_common_lib_glsl,
                datatoc_bsdf_sampling_lib_glsl,
@@ -231,6 +235,7 @@ static void lightprobe_shaders_init(void)
        MEM_freeN(shader_str);
 
        shader_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
                datatoc_common_uniforms_lib_glsl,
                datatoc_bsdf_common_lib_glsl,
                datatoc_bsdf_sampling_lib_glsl,
@@ -242,15 +247,20 @@ static void lightprobe_shaders_init(void)
 
        shader_str = BLI_string_joinN(
                datatoc_octahedron_lib_glsl,
+               datatoc_common_view_lib_glsl,
                datatoc_common_uniforms_lib_glsl,
                datatoc_bsdf_common_lib_glsl,
                datatoc_irradiance_lib_glsl,
                datatoc_lightprobe_lib_glsl,
                datatoc_lightprobe_grid_display_frag_glsl);
 
-       e_data.probe_grid_display_sh = DRW_shader_create(
-               datatoc_lightprobe_grid_display_vert_glsl, NULL, shader_str, 
filter_defines);
+       vert_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
+               datatoc_lightprobe_grid_display_vert_glsl);
 
+       e_data.probe_grid_display_sh = DRW_shader_create(vert_str, NULL, 
shader_str, filter_defines);
+
+       MEM_freeN(vert_str);
        MEM_freeN(shader_str);
 
        e_data.probe_grid_fill_sh = DRW_shader_create_fullscreen(
@@ -258,19 +268,33 @@ static void lightprobe_shaders_init(void)
 
        shader_str = BLI_string_joinN(
                datatoc_octahedron_lib_glsl,
+               datatoc_common_view_lib_glsl,
                datatoc_common_uniforms_lib_glsl,
                datatoc_bsdf_common_lib_glsl,
                datatoc_lightprobe_lib_glsl,
                datatoc_lightprobe_cube_display_frag_glsl);
 
-       e_data.probe_cube_display_sh = DRW_shader_create(
-               datatoc_lightprobe_cube_display_vert_glsl, NULL, shader_str, 
NULL);
+       vert_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
+               datatoc_lightprobe_cube_display_vert_glsl);
+
+       e_data.probe_cube_display_sh = DRW_shader_create(vert_str, NULL, 
shader_str, NULL);
 
+       MEM_freeN(vert_str);
        MEM_freeN(shader_str);
 
-       e_data.probe_planar_display_sh = DRW_shader_create(
-               datatoc_lightprobe_planar_display_vert_glsl, NULL,
-               datatoc_lightprobe_planar_display_frag_glsl, NULL);
+       vert_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
+               datatoc_lightprobe_planar_display_vert_glsl);
+
+       shader_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
+               datatoc_lightprobe_planar_display_frag_glsl);
+
+       e_data.probe_planar_display_sh = DRW_shader_create(vert_str, NULL, 
shader_str, NULL);
+
+       MEM_freeN(vert_str);
+       MEM_freeN(shader_str);
 
        e_data.probe_planar_downsample_sh = DRW_shader_create(
                datatoc_lightprobe_planar_downsample_vert_glsl,
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c 
b/source/blender/draw/engines/eevee/eevee_materials.c
index a72bf85cbe9..6c76a86d491 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -47,6 +47,7 @@
 
 /* *********** STATIC *********** */
 static struct {
+       char *shadow_shader_lib;
        char *frag_shader_lib;
        char *volume_shader_lib;
 
@@ -81,6 +82,7 @@ extern char datatoc_bsdf_common_lib_glsl[];
 extern char datatoc_bsdf_direct_lib_glsl[];
 extern char datatoc_bsdf_sampling_lib_glsl[];
 extern char datatoc_common_uniforms_lib_glsl[];
+extern char datatoc_common_view_lib_glsl[];
 extern char datatoc_irradiance_lib_glsl[];
 extern char datatoc_octahedron_lib_glsl[];
 extern char datatoc_lit_surface_frag_glsl[];
@@ -531,7 +533,7 @@ void EEVEE_materials_init(EEVEE_ViewLayerData *sldata, 
EEVEE_StorageList *stl, E
                char *frag_str = NULL;
 
                /* Shaders */
-               e_data.frag_shader_lib = BLI_string_joinN(
+               e_data.shadow_shader_lib = BLI_string_joinN(
                        datatoc_common_uniforms_lib_glsl,
                        datatoc_bsdf_common_lib_glsl,
                        datatoc_bsdf_sampling_lib_glsl,
@@ -555,7 +557,12 @@ void EEVEE_materials_init(EEVEE_ViewLayerData *sldata, 
EEVEE_StorageList *stl, E
                        datatoc_lit_surface_frag_glsl,
                        datatoc_volumetric_lib_glsl);
 
+               e_data.frag_shader_lib = BLI_string_joinN(
+                       datatoc_common_view_lib_glsl,
+                       e_data.shadow_shader_lib);
+
                e_data.volume_shader_lib = BLI_string_joinN(
+                       datatoc_common_view_lib_glsl,
                        datatoc_common_uniforms_lib_glsl,
                        datatoc_bsdf_common_lib_glsl,
                        datatoc_ambient_occlusion_lib_glsl,
@@ -755,7 +762,7 @@ struct GPUMaterial *EEVEE_material_mesh_depth_get(
        char *defines = eevee_get_defines(options);
 
        char *frag_str = BLI_string_joinN(
-               e_data.frag_shader_lib,
+               (is_shadow) ? e_data.shadow_shader_lib : e_data.frag_shader_lib,
                datatoc_prepass_frag_glsl);
 
        mat = DRW_shader_create_from_material(
@@ -1515,6 +1522,7 @@ void EEVEE_materials_free(void)
        for (int i = 0; i < VAR_MAT_MAX; ++i) {
                DRW_SHADER_FREE_SAFE(e_data.default_lit[i]);
        }
+       MEM_SAFE_FREE(e_data.shadow_shader_lib);
        MEM_SAFE_FREE(e_data.frag_shader_lib);
        MEM_SAFE_FREE(e_data.volume_shader_lib);
        DRW_SHADER_FREE_SAFE(e_data.default_prepass_sh);
diff --git a/source/blender/draw/engines/eevee/eevee_mist.c 
b/source/blender/draw/engines/eevee/eevee_mist.c
index ba9157a7f91..e221ed865b5 100644
--- a/source/blender/draw/engines/eevee/eevee_mist.c
+++ b/source/blender/draw/engines/eevee/eevee_mist.c
@@ -35,6 +35,7 @@
 
 #include "eevee_private.h"
 
+extern char datatoc_common_view_lib_glsl[];
 extern char datatoc_common_uniforms_lib_glsl[];
 extern char datatoc_bsdf_common_lib_glsl[];
 extern char datatoc_effect_mist_frag_glsl[];
@@ -59,6 +60,7 @@ void EEVEE_mist_output_init(EEVEE_ViewLayerData *sldata, 
EEVEE_Data *vedata)
 
        if (e_data.mist_sh == NULL) {
                char *frag_str = BLI_string_joinN(
+                       datatoc_common_view_lib_glsl,
                        datatoc_common_uniforms_lib_glsl,
                        datatoc_bsdf_common_lib_glsl,
                        datatoc_effect_mist_frag_glsl);
diff --git a/source/blender/draw/engines/eevee/eevee_occlusion.c 
b/source/blender/draw/engines/eevee/eevee_occlusion.c
index 944003d7d1f..d7d022e9b98 100644
--- a/source/blender/draw/engines/eevee/eevee_occlusion.c
+++ b/source/blender/draw/engines/eevee/eevee_occlusion.c
@@ -44,6 +44,7 @@ static struct {
 } e_data = {NULL}; /* Engine data */
 
 extern char datatoc_ambient_occlusion_lib_glsl[];
+extern char datatoc_common_view_lib_glsl[];
 extern char datatoc_common_uniforms_lib_glsl[];
 extern char datatoc_bsdf_common_lib_glsl[];
 extern char datatoc_effect_gtao_frag_glsl[];
@@ -51,6 +52,7 @@ extern char datatoc_effect_gtao_frag_glsl[];
 static void eevee_create_shader_occlusion(void)
 {
        char *frag_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
                datatoc_common_uniforms_lib_glsl,
                datatoc_bsdf_common_lib_glsl,
                datatoc_ambient_occlusion_lib_glsl,
diff --git a/source/blender/draw/engines/eevee/eevee_screen_raytrace.c 
b/source/blender/draw/engines/eevee/eevee_screen_raytrace.c
index 2917bfd1236..4ae18b24bdc 100644
--- a/source/blender/draw/engines/eevee/eevee_screen_raytrace.c
+++ b/source/blender/draw/engines/eevee/eevee_screen_raytrace.c
@@ -51,6 +51,7 @@ static struct {
 } e_data = {NULL}; /* Engine data */
 
 extern char datatoc_ambient_occlusion_lib_glsl[];
+extern char datatoc_common_view_lib_glsl[];
 extern char datatoc_common_uniforms_lib_glsl[];
 extern char datatoc_bsdf_common_lib_glsl[];
 extern char datatoc_bsdf_sampling_lib_glsl[];
@@ -63,6 +64,7 @@ static struct GPUShader 
*eevee_effects_screen_raytrace_shader_get(int options)
 {
        if (e_data.ssr_sh[options] == NULL) {
                char *ssr_shader_str = BLI_string_joinN(
+                       datatoc_common_view_lib_glsl,
                        datatoc_common_uniforms_lib_glsl,
                        datatoc_bsdf_common_lib_glsl,
                        datatoc_bsdf_sampling_lib_glsl,
diff --git a/source/blender/draw/engines/eevee/eevee_subsurface.c 
b/source/blender/draw/engines/eevee/eevee_subsurface.c
index c3079d931fb..be62a407615 100644
--- a/source/blender/draw/engines/eevee/eevee_subsurface.c
+++ b/source/blender/draw/engines/eevee/eevee_subsurface.c
@@ -36,12 +36,14 @@ static struct {
        struct GPUShader *sss_sh[4];
 } e_data = {NULL}; /* Engine data */
 
+extern char datatoc_common_view_lib_glsl[];
 extern char datatoc_common_uniforms_lib_glsl[];
 extern char datatoc_effect_subsurface_frag_glsl[];
 
 static void eevee_create_shader_subsurface(void)
 {
        char *frag_str = BLI_string_joinN(
+               datatoc_common_view_lib_glsl,
                datatoc_common_uniforms_lib_glsl,
                datatoc_effect_subsurface_frag_glsl);
 
diff --git a/source/blender/draw/engines/eevee/eevee_volumes.c 
b/source/blender/draw/engines/eevee/eevee_volumes.c
index 2dbce1379ec..26ac4498073 100644
--- a/source/blender/draw/engines/eevee/eevee_volumes.c
+++ b/source/blender/draw/engines/eevee/eevee_volumes.c
@@ -65,6 +65,7 @@ static struct {
 extern char datatoc_bsdf_common_lib_glsl[];
 extern char datatoc_bsdf_direct_lib_glsl[];
 extern char datatoc_common_uniforms_lib_glsl[];
+extern char datatoc_common_view_lib_glsl[];
 extern char datatoc_octahedron_lib_glsl[];
 ext

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to