[Bf-blender-cvs] [a754d222baa] tmp_hair_curves: Merge branch 'hair_guides' into tmp_hair_curves
Lukas Tönne
noreply at git.blender.org
Tue Jul 3 09:12:00 CEST 2018
Commit: a754d222baa46d4c37e38e17fbc2df77de7ffe3b
Author: Lukas Tönne
Date: Tue Jul 3 07:42:12 2018 +0100
Branches: tmp_hair_curves
https://developer.blender.org/rBa754d222baa46d4c37e38e17fbc2df77de7ffe3b
Merge branch 'hair_guides' into tmp_hair_curves
===================================================================
===================================================================
diff --cc source/blender/draw/engines/workbench/workbench_deferred.c
index c9bb0dd9947,412a29722ab..f3c96923dae
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@@ -632,20 -625,16 +617,16 @@@ static void workbench_cache_populate_pa
int color_type = workbench_material_determine_color_type(wpd, image);
WORKBENCH_MaterialData *material = get_or_create_material_data(vedata, ob, mat, image, color_type);
- struct GPUShader *shader = (color_type != V3D_SHADING_TEXTURE_COLOR)
- ? wpd->prepass_solid_hair_sh
- : wpd->prepass_texture_hair_sh;
+ struct GPUShader *shader = (color_type != V3D_SHADING_TEXTURE_COLOR) ?
+ wpd->prepass_solid_hair_sh :
+ wpd->prepass_texture_hair_sh;
- DRWShadingGroup *shgrp = DRW_shgroup_hair_create(
+ DRWShadingGroup *shgrp = DRW_shgroup_particle_hair_create(
- ob, psys, md,
- psl->prepass_hair_pass,
- shader);
+ ob, psys, md,
+ psl->prepass_hair_pass,
+ shader);
DRW_shgroup_stencil_mask(shgrp, 0xFF);
DRW_shgroup_uniform_int(shgrp, "object_id", &material->object_id, 1);
- DRW_shgroup_uniform_block(shgrp, "material_block", material->material_ubo);
- if (image) {
- GPUTexture *tex = GPU_texture_from_blender(image, NULL, GL_TEXTURE_2D, false, 0.0f);
- DRW_shgroup_uniform_texture(shgrp, "image", tex);
- }
+ workbench_material_shgroup_uniform(wpd, shgrp, material);
}
}
}
diff --cc source/blender/draw/engines/workbench/workbench_forward.c
index ee579dd6d44,fb2d7885b28..805cf0066d8
--- a/source/blender/draw/engines/workbench/workbench_forward.c
+++ b/source/blender/draw/engines/workbench/workbench_forward.c
@@@ -51,7 -51,9 +51,8 @@@ static struct
struct GPUShader *composite_sh_cache[MAX_SHADERS];
struct GPUShader *transparent_accum_sh_cache[MAX_SHADERS];
struct GPUShader *object_outline_sh;
+ struct GPUShader *object_outline_texture_sh;
struct GPUShader *object_outline_hair_sh;
- struct GPUShader *object_outline_hair_fibers_sh;
struct GPUShader *checker_depth_sh;
struct GPUTexture *object_id_tx; /* ref only, not alloced */
@@@ -276,18 -270,24 +261,21 @@@ void workbench_forward_engine_init(WORK
memset(e_data.composite_sh_cache, 0x00, sizeof(struct GPUShader *) * MAX_SHADERS);
memset(e_data.transparent_accum_sh_cache, 0x00, sizeof(struct GPUShader *) * MAX_SHADERS);
- char *defines = workbench_material_build_defines(wpd, OB_SOLID, false);
- char *defines_hair = workbench_material_build_defines(wpd, OB_SOLID, true);
- char *defines = workbench_material_build_defines(wpd, false, DRW_SHADER_HAIR_NONE);
- char *defines_texture = workbench_material_build_defines(wpd, true, DRAW_SHADER_HAIR_NONE);
- char *defines_hair = workbench_material_build_defines(wpd, false, DRW_SHADER_HAIR_PARTICLES);
- char *defines_hair_fibers = workbench_material_build_defines(wpd, false, DRW_SHADER_HAIR_FIBERS);
++ char *defines = workbench_material_build_defines(wpd, false, false);
++ char *defines_texture = workbench_material_build_defines(wpd, true, false);
++ char *defines_hair = workbench_material_build_defines(wpd, false, true);
++ char *defines_hair_fibers = workbench_material_build_defines(wpd, false, true);
char *forward_vert = workbench_build_forward_vert();
- char *forward_depth_frag = workbench_build_forward_depth_frag();
e_data.object_outline_sh = DRW_shader_create(
forward_vert, NULL,
- forward_depth_frag, defines);
+ datatoc_workbench_forward_depth_frag_glsl, defines);
+ e_data.object_outline_texture_sh = DRW_shader_create(
+ forward_vert, NULL,
+ datatoc_workbench_forward_depth_frag_glsl, defines_texture);
e_data.object_outline_hair_sh = DRW_shader_create(
forward_vert, NULL,
- forward_depth_frag, defines_hair);
+ datatoc_workbench_forward_depth_frag_glsl, defines_hair);
- e_data.object_outline_hair_fibers_sh = DRW_shader_create(
- forward_vert, NULL,
- forward_depth_frag, defines_hair_fibers);
- workbench_fxaa_engine_init();
e_data.checker_depth_sh = DRW_shader_create_fullscreen(
datatoc_workbench_checkerboard_depth_frag_glsl, NULL);
@@@ -379,7 -380,9 +368,8 @@@ void workbench_forward_engine_free(
DRW_SHADER_FREE_SAFE(e_data.transparent_accum_sh_cache[index]);
}
DRW_SHADER_FREE_SAFE(e_data.object_outline_sh);
+ DRW_SHADER_FREE_SAFE(e_data.object_outline_texture_sh);
DRW_SHADER_FREE_SAFE(e_data.object_outline_hair_sh);
- DRW_SHADER_FREE_SAFE(e_data.object_outline_hair_fibers_sh);
DRW_SHADER_FREE_SAFE(e_data.checker_depth_sh);
workbench_fxaa_engine_free();
diff --cc source/blender/draw/engines/workbench/workbench_private.h
index 404ec50fd97,23c550d6999..3bec6bb6d53
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@@ -269,20 -260,29 +256,22 @@@ DRWPass *workbench_fxaa_create_pass(GPU
/* workbench_effect_taa.c */
void workbench_taa_engine_init(WORKBENCH_Data *vedata);
void workbench_taa_engine_free(void);
- DRWPass *workbench_taa_create_pass(WORKBENCH_TextureList *txl, WORKBENCH_EffectInfo *effect_info, WORKBENCH_FramebufferList *fbl, GPUTexture **color_buffer_tx);
- void workbench_taa_draw_pass(WORKBENCH_EffectInfo *effect_info, /*WORKBENCH_PrivateData *wpd, , GPUFrameBuffer *fb, GPUTexture *tx, */DRWPass *effect_aa_pass);
- void workbench_taa_draw_scene_start(WORKBENCH_EffectInfo *effect_info);
+ DRWPass *workbench_taa_create_pass(WORKBENCH_Data *vedata, GPUTexture **color_buffer_tx);
+ void workbench_taa_draw_scene_start(WORKBENCH_Data *vedata);
void workbench_taa_draw_scene_end(WORKBENCH_Data *vedata);
void workbench_taa_view_updated(WORKBENCH_Data *vedata);
+ int workbench_taa_calculate_num_iterations(WORKBENCH_Data *vedata);
/* workbench_materials.c */
-typedef enum DRWShaderHairType
-{
- DRW_SHADER_HAIR_NONE = 0,
- DRW_SHADER_HAIR_PARTICLES = 1,
- DRW_SHADER_HAIR_FIBERS = 2,
-} DRWShaderHairType;
-
int workbench_material_determine_color_type(WORKBENCH_PrivateData *wpd, Image *ima);
-char *workbench_material_build_defines(WORKBENCH_PrivateData *wpd, bool use_textures, DRWShaderHairType hair_type);
+char *workbench_material_build_defines(WORKBENCH_PrivateData *wpd, bool use_textures, bool is_hair);
void workbench_material_update_data(WORKBENCH_PrivateData *wpd, Object *ob, Material *mat, WORKBENCH_MaterialData *data);
uint workbench_material_get_hash(WORKBENCH_MaterialData *material_template);
-int workbench_material_get_shader_index(WORKBENCH_PrivateData *wpd, bool use_textures, DRWShaderHairType hair_type);
+int workbench_material_get_shader_index(WORKBENCH_PrivateData *wpd, bool use_textures, bool is_hair);
void workbench_material_set_normal_world_matrix(
DRWShadingGroup *grp, WORKBENCH_PrivateData *wpd, float persistent_matrix[3][3]);
+ void workbench_material_shgroup_uniform(WORKBENCH_PrivateData *wpd, DRWShadingGroup *grp, WORKBENCH_MaterialData *material);
+ void workbench_material_copy(WORKBENCH_MaterialData *dest_material, const WORKBENCH_MaterialData *source_material);
/* workbench_studiolight.c */
void studiolight_update_world(StudioLight *sl, WORKBENCH_UBO_World *wd);
More information about the Bf-blender-cvs
mailing list