Commit: 41e8bd9337563fc835300513e2273ad71696a619
Author: Lukas Tönne
Date:   Mon Aug 7 13:06:02 2017 +0100
Branches: strand_editmode
https://developer.blender.org/rB41e8bd9337563fc835300513e2273ad71696a619

Merge branch 'blender2.8' of git.blender.org:blender into strand_editmode

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



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

diff --cc source/blender/draw/CMakeLists.txt
index 1fada0e6f93,e3a3ac499a1..c6b07c76d83
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@@ -60,11 -60,10 +60,12 @@@ set(SR
        intern/draw_cache_impl_lattice.c
        intern/draw_cache_impl_mesh.c
        intern/draw_cache_impl_particles.c
 +      intern/draw_cache_impl_strands.c
        intern/draw_common.c
 +      intern/draw_hair.c
        intern/draw_manager.c
        intern/draw_manager_text.c
+       intern/draw_manager_profiling.c
        intern/draw_view.c
        modes/edit_armature_mode.c
        modes/edit_curve_mode.c
diff --cc source/blender/draw/engines/eevee/eevee_materials.c
index 9772666d3ae,8cd9dd4829d..e91ffeaa6b8
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@@ -320,57 -308,44 +329,58 @@@ static void create_default_shader(int o
  void EEVEE_materials_init(EEVEE_StorageList *stl)
  {
        if (!e_data.frag_shader_lib) {
 -              char *frag_str = NULL;
 -
                /* Shaders */
 -              DynStr *ds_frag = BLI_dynstr_new();
 -              BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_ambient_occlusion_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_irradiance_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_lightprobe_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_ltc_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_bsdf_direct_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_lamps_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_lit_surface_frag_glsl);
 -              e_data.frag_shader_lib = BLI_dynstr_get_cstring(ds_frag);
 -              BLI_dynstr_free(ds_frag);
 +              {
 +                      DynStr *ds_frag = BLI_dynstr_new();
 +                      BLI_dynstr_append(ds_frag, 
datatoc_bsdf_common_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, 
datatoc_ambient_occlusion_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_irradiance_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_lightprobe_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_ltc_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, 
datatoc_bsdf_direct_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_lamps_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, 
datatoc_lit_surface_frag_glsl);
 +                      e_data.frag_shader_lib = 
BLI_dynstr_get_cstring(ds_frag);
 +                      BLI_dynstr_free(ds_frag);
 +              }
 +              
 +              {
 +                      DynStr *ds_frag = BLI_dynstr_new();
 +                      BLI_dynstr_append(ds_frag, 
datatoc_bsdf_common_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, 
datatoc_ambient_occlusion_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_irradiance_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_lightprobe_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_ltc_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, 
datatoc_bsdf_direct_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, datatoc_lamps_lib_glsl);
 +                      BLI_dynstr_append(ds_frag, 
datatoc_volumetric_frag_glsl);
 +                      e_data.volume_shader_lib = 
BLI_dynstr_get_cstring(ds_frag);
 +                      BLI_dynstr_free(ds_frag);
 +              }
  
 -              ds_frag = BLI_dynstr_new();
 -              BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_ambient_occlusion_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_irradiance_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_lightprobe_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_ltc_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_bsdf_direct_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_lamps_lib_glsl);
 -              BLI_dynstr_append(ds_frag, datatoc_volumetric_frag_glsl);
 -              e_data.volume_shader_lib = BLI_dynstr_get_cstring(ds_frag);
 -              BLI_dynstr_free(ds_frag);
 +              char *hair_fiber_vert_str = NULL;
 +              {
 +                      DynStr *ds_vert = BLI_dynstr_new();
 +                      BLI_dynstr_append(ds_vert, datatoc_hair_lib_glsl);
 +                      BLI_dynstr_append(ds_vert, datatoc_prepass_vert_glsl);
 +                      hair_fiber_vert_str = BLI_dynstr_get_cstring(ds_vert);
 +                      BLI_dynstr_free(ds_vert);
 +              }
  
 -              ds_frag = BLI_dynstr_new();
 -              BLI_dynstr_append(ds_frag, e_data.frag_shader_lib);
 -              BLI_dynstr_append(ds_frag, datatoc_default_frag_glsl);
 -              frag_str = BLI_dynstr_get_cstring(ds_frag);
 -              BLI_dynstr_free(ds_frag);
 +              char *frag_str = NULL;
 +              {
 +                      DynStr *ds_frag = BLI_dynstr_new();
 +                      BLI_dynstr_append(ds_frag, e_data.frag_shader_lib);
 +                      BLI_dynstr_append(ds_frag, datatoc_default_frag_glsl);
 +                      frag_str = BLI_dynstr_get_cstring(ds_frag);
 +                      BLI_dynstr_free(ds_frag);
 +              }
  
-               e_data.default_background = DRW_shader_create_fullscreen(
-                       datatoc_default_world_frag_glsl, NULL);
+               e_data.default_background = DRW_shader_create(
+                       datatoc_background_vert_glsl, NULL, 
datatoc_default_world_frag_glsl,
+                       NULL);
  
                e_data.default_prepass_sh = DRW_shader_create(
                        datatoc_prepass_vert_glsl, NULL, 
datatoc_prepass_frag_glsl,
@@@ -642,8 -593,10 +652,10 @@@ struct GPUMaterial *EEVEE_material_hair
   **/
  static struct DRWShadingGroup *EEVEE_default_shading_group_create(
          EEVEE_SceneLayerData *sldata, EEVEE_Data *vedata, DRWPass *pass,
-         bool is_hair, bool is_hair_fibers, bool is_flat_normal, bool use_ao, 
bool use_bent_normals, bool use_blend)
 -        bool is_hair, bool is_flat_normal, bool use_ao, bool 
use_bent_normals, bool use_blend, bool use_ssr)
++        bool is_hair, bool is_hair_fibers, bool is_flat_normal, bool use_ao, 
bool use_bent_normals, bool use_blend, bool use_ssr)
  {
+       static int ssr_id;
+       ssr_id = (use_ssr) ? 0 : -1;
        int options = VAR_MAT_MESH;
  
        if (is_hair) options |= VAR_MAT_HAIR;
@@@ -668,8 -620,10 +680,10 @@@
   **/
  static struct DRWShadingGroup *EEVEE_default_shading_group_get(
          EEVEE_SceneLayerData *sldata, EEVEE_Data *vedata,
-         bool is_hair, bool is_hair_fibers, bool is_flat_normal, bool use_ao, 
bool use_bent_normals)
 -        bool is_hair, bool is_flat_normal, bool use_ao, bool 
use_bent_normals, bool use_ssr)
++        bool is_hair, bool is_hair_fibers, bool is_flat_normal, bool use_ao, 
bool use_bent_normals, bool use_ssr)
  {
+       static int ssr_id;
+       ssr_id = (use_ssr) ? 0 : -1;
        int options = VAR_MAT_MESH;
  
        if (is_hair) options |= VAR_MAT_HAIR;
@@@ -878,8 -830,8 +896,8 @@@ static void material_opaque
  
        /* Fallback to default shader */
        if (*shgrp == NULL) {
 -              *shgrp = EEVEE_default_shading_group_get(sldata, vedata, false, 
use_flat_nor,
 +              *shgrp = EEVEE_default_shading_group_get(sldata, vedata, false, 
false, use_flat_nor,
-                       stl->effects->use_ao, stl->effects->use_bent_normals);
+                       stl->effects->use_ao, stl->effects->use_bent_normals, 
stl->effects->use_ssr);
                DRW_shgroup_uniform_vec3(*shgrp, "basecol", color_p, 1);
                DRW_shgroup_uniform_float(*shgrp, "metallic", metal_p, 1);
                DRW_shgroup_uniform_float(*shgrp, "specular", spec_p, 1);
@@@ -937,7 -890,7 +956,7 @@@ static void material_transparent
        if (*shgrp == NULL) {
                *shgrp = EEVEE_default_shading_group_create(
                        sldata, vedata, psl->transparent_pass,
-                       false, false, use_flat_nor, stl->effects->use_ao, 
stl->effects->use_bent_normals, true);
 -                      false, use_flat_nor, stl->effects->use_ao, 
stl->effects->use_bent_normals, true, false);
++                      false, false, use_flat_nor, stl->effects->use_ao, 
stl->effects->use_bent_normals, true, false);
                DRW_shgroup_uniform_vec3(*shgrp, "basecol", color_p, 1);
                DRW_shgroup_uniform_float(*shgrp, "metallic", metal_p, 1);
                DRW_shgroup_uniform_float(*shgrp, "specular", spec_p, 1);
@@@ -1159,37 -1083,36 +1178,37 @@@ void EEVEE_materials_cache_populate(EEV
                                                        if (ma == NULL) {
                                                                ma = 
&defmaterial;
                                                        }
 -
 -                                                      float *color_p = &ma->r;
 -                                                      float *metal_p = 
&ma->ray_mirror;
 -                                                      float *spec_p = 
&ma->spec;
 -                                                      float *rough_p = 
&ma->gloss_mir;
 -
 -                                                      
DRW_shgroup_call_add(stl->g_data->depth_shgrp, hair_geom, mat);
 -                                                      
DRW_shgroup_call_add(stl->g_data->depth_shgrp_clip, hair_geom, mat);
 -
 -                                                      shgrp = 
BLI_ghash_lookup(material_hash, (const void *)ma);
 -
 -                                                      if (shgrp) {
 -                                                              
DRW_shgroup_call_add(shgrp, hair_geom, mat);
 +                                                      
 +                                                      if (!use_fibers) {
 +                                                              
DRW_shgroup_call_add(stl->g_data->depth_shgrp, hair_geom, mat);
 +                                                              
DRW_shgroup_call_add(stl->g_data->depth_shgrp_clip, hair_geom, mat);
                                                        }
                                                        else {
 +                                                              
DRW_shgroup_call_add(stl->g_data->depth_shgrp_hair_fibers, hair_geom, mat);
 +                                                              
DRW_hair_shader_uniforms(stl->g_data->depth_shgrp_hair_fibers, scene,
 +                                                                              
         fiber_texture, fiber_buffer);
 +                                                              
 +                                                              
DRW_shgroup_call_add(stl->g_data->depth_shgrp_hair_fibers_clip, hair_geom, mat);
 +                                                              
DRW_hair_shader_uniforms(stl->g_data->depth_shgrp_hair_fibers_clip, scene,
 +                                                                              
         fiber_texture, fiber_buffer);
 +                                                      }
 +                                                      
 +                                                      DRWShadingGroup *shgrp 
= BLI_ghash_lookup(material_hash, (const void *)ma);
 +                                                      if (!shgrp) {
 +                                                              float *color_p 
= &ma->r;
 +                                                              float *metal_p 
= &ma->ray_mirror;
 +                                                              float *spec_p = 
&ma->spec;
 +                                                              float *rough_p 
= &ma->gloss_mir;
 +                                                              
                                                                if 
(ma->use_nodes && ma->nodetree) {
                                                                        struct 
GPUMaterial *gpumat = EEVEE_material_hair_get(scene, ma,
 -                                                                              
stl->effects->use_ao, stl->effects->use_bent_normals);
 -
 +                                                                              
use_fibers, stl->effects->use_ao, stl->effects->use_bent_normals);
 +                                                                      
                                                                        shgrp = 
DRW_shgroup_material_create(gpumat, psl->material_pass);
                                                                        if 
(shgrp) {
-                                                                               
add_standard_uniforms(shgrp, sldata, vedata);
+                                                                               
add_standard_uniforms(shgrp, sldata, vedata, NULL);
 -
 +                                                                              
                                                                                
BLI_ghash_insert(material_hash, ma, shgrp);
 -
 -                                                                              
DRW_shgroup_call_add(shgrp, hair_geom, mat);
                                                                        }
                                                                        else {
                                                                                
/* Shader failed : pink color */
@@@ -1200,11 -1123,11 +1219,11 @@@
                                                                                
metal_p = spec_p = rough_p = ½
                                                                        }
                                                                }
 -
 +                                                              
                                                                /* Fallback to 
default shader */
                                                                if (shgrp == 
NULL) {
 -                                                                      shgrp = 
EEVEE_default_shading_group_get(sldata, vedata, true, false,
 -                                                                              
stl->ef

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to