[Bf-blender-cvs] [41e8bd93375] strand_editmode: Merge branch 'blender2.8' of git.blender.org:blender into strand_editmode

Lukas Tönne noreply at git.blender.org
Mon Aug 7 14:06:17 CEST 2017


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. @@




More information about the Bf-blender-cvs mailing list