- add the use of DRWShaderLibrary to EEVEE's glsl codebase to reduce code complexity and duplication. - split bsdf_common_lib.glsl into multiple sub library which are now shared with other engines. - the surface shader code is now more organised and have its own files. - change default world to use a material nodetree and make lookdev shader more clear. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D8306
52 lines
1.4 KiB
GLSL
52 lines
1.4 KiB
GLSL
|
|
#pragma BLENDER_REQUIRE(common_view_lib.glsl)
|
|
#pragma BLENDER_REQUIRE(common_hair_lib.glsl)
|
|
#pragma BLENDER_REQUIRE(surface_lib.glsl)
|
|
|
|
in vec3 pos;
|
|
in vec3 nor;
|
|
|
|
void main()
|
|
{
|
|
GPU_INTEL_VERTEX_SHADER_WORKAROUND
|
|
|
|
#ifdef HAIR_SHADER
|
|
hairStrandID = hair_get_strand_id();
|
|
vec3 pos, binor;
|
|
hair_get_pos_tan_binor_time((ProjectionMatrix[3][3] == 0.0),
|
|
ModelMatrixInverse,
|
|
ViewMatrixInverse[3].xyz,
|
|
ViewMatrixInverse[2].xyz,
|
|
pos,
|
|
hairTangent,
|
|
binor,
|
|
hairTime,
|
|
hairThickness,
|
|
hairThickTime);
|
|
|
|
worldNormal = cross(hairTangent, binor);
|
|
vec3 world_pos = pos;
|
|
#else
|
|
vec3 world_pos = point_object_to_world(pos);
|
|
#endif
|
|
|
|
gl_Position = point_world_to_ndc(world_pos);
|
|
#ifdef MESH_SHADER
|
|
worldPosition = world_pos;
|
|
viewPosition = point_world_to_view(worldPosition);
|
|
|
|
# ifndef HAIR_SHADER
|
|
worldNormal = normalize(normal_object_to_world(nor));
|
|
# endif
|
|
|
|
/* No need to normalize since this is just a rotation. */
|
|
viewNormal = normal_world_to_view(worldNormal);
|
|
# ifdef USE_ATTR
|
|
# ifdef HAIR_SHADER
|
|
pos = hair_get_strand_pos();
|
|
# endif
|
|
pass_attr(pos, NormalMatrix, ModelMatrixInverse);
|
|
# endif
|
|
#endif
|
|
}
|