Commit: 7d5297305af5f46f84cf270095f187ef34aebb5c
Author: Lukas Tönne
Date:   Wed Jun 6 21:33:45 2018 +0100
Branches: hair_guides hair_guides_grooming
https://developer.blender.org/rB7d5297305af5f46f84cf270095f187ef34aebb5c

Fix hair fiber prepass shader and add missin HAIR_SHADER define to compile it.

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

M       source/blender/draw/engines/eevee/eevee_materials.c
M       source/blender/draw/engines/eevee/shaders/prepass_vert.glsl
M       source/blender/draw/intern/draw_hair_fibers.c

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

diff --git a/source/blender/draw/engines/eevee/eevee_materials.c 
b/source/blender/draw/engines/eevee/eevee_materials.c
index 04edf50cc41..b61be355087 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -1551,7 +1551,8 @@ static void material_hair(
                /*DRWShadingGroup *shgrp =*/ 
DRW_shgroup_hair_fibers_create(scene, ob, hsys, scalp, psl->depth_pass, 
e_data.default_prepass_hair_fiber_sh);
        }
        {
-               /*DRWShadingGroup *shgrp =*/ 
DRW_shgroup_hair_fibers_create(scene, ob, hsys, scalp, psl->depth_pass_clip, 
e_data.default_prepass_hair_fiber_clip_sh);
+               DRWShadingGroup *shgrp = DRW_shgroup_hair_fibers_create(scene, 
ob, hsys, scalp, psl->depth_pass_clip, 
e_data.default_prepass_hair_fiber_clip_sh);
+               DRW_shgroup_uniform_block(shgrp, "clip_block", 
sldata->clip_ubo);
        }
        
        {
diff --git a/source/blender/draw/engines/eevee/shaders/prepass_vert.glsl 
b/source/blender/draw/engines/eevee/shaders/prepass_vert.glsl
index 823a5cd1f08..52192a4ce86 100644
--- a/source/blender/draw/engines/eevee/shaders/prepass_vert.glsl
+++ b/source/blender/draw/engines/eevee/shaders/prepass_vert.glsl
@@ -2,6 +2,8 @@
 uniform mat4 ModelViewProjectionMatrix;
 uniform mat4 ModelMatrix;
 uniform mat4 ModelViewMatrix;
+uniform mat4 ModelViewMatrixInverse;
+uniform mat4 ProjectionMatrix;
 
 /* keep in sync with DRWManager.view_data */
 layout(std140) uniform clip_block {
@@ -22,19 +24,24 @@ in vec3 pos;
 void main()
 {
 #ifdef HAIR_SHADER
+       bool is_persp = (ProjectionMatrix[3][3] == 0.0);
 
 #ifdef HAIR_SHADER_FIBERS
-       vec3 pos;
-       vec3 nor;
-       vec2 view_offset;
-       hair_fiber_get_vertex(fiber_index, curve_param, ModelViewMatrix, pos, 
nor, view_offset);
+       float time, thick_time, thickness;
+       vec3 pos, tang, binor;
+       hair_fiber_get_vertex(
+               fiber_index, curve_param,
+               is_persp, ModelViewMatrixInverse[3].xyz, 
ModelViewMatrixInverse[2].xyz,
+               pos, tang, binor,
+               time, thickness, thick_time);
+
        gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
-       gl_Position.xy += view_offset * gl_Position.w;
+       vec4 worldPosition = ModelMatrix * vec4(pos, 1.0);
 #else
        float time, thick_time, thickness;
        vec3 pos, tan, binor;
        hair_get_pos_tan_binor_time(
-               (ProjectionMatrix[3][3] == 0.0),
+               is_persp,
                ViewMatrixInverse[3].xyz, ViewMatrixInverse[2].xyz,
                pos, tan, binor, time, thickness, thick_time);
 
diff --git a/source/blender/draw/intern/draw_hair_fibers.c 
b/source/blender/draw/intern/draw_hair_fibers.c
index 263522538d2..290c478fc90 100644
--- a/source/blender/draw/intern/draw_hair_fibers.c
+++ b/source/blender/draw/intern/draw_hair_fibers.c
@@ -41,7 +41,7 @@ const char* DRW_hair_shader_defines(void)
 {
        static char str[256];
        
-       BLI_snprintf(str, sizeof(str), "#define HAIR_SHADER_FIBERS\n#define 
HAIR_SHADER_TEX_WIDTH %d\n",
+       BLI_snprintf(str, sizeof(str), "#define HAIR_SHADER\n#define 
HAIR_SHADER_FIBERS\n#define HAIR_SHADER_TEX_WIDTH %d\n",
                     GPU_max_texture_size());
        
        return str;

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

Reply via email to