#pragma BLENDER_REQUIRE(common_view_lib.glsl) #pragma BLENDER_REQUIRE(eevee_attributes_lib.glsl) #pragma BLENDER_REQUIRE(eevee_nodetree_lib.glsl) #pragma BLENDER_REQUIRE(eevee_surf_lib.glsl) #pragma BLENDER_REQUIRE(eevee_velocity_lib.glsl) void main() { init_interface(); interp.P = point_object_to_world(pos); interp.N = normal_object_to_world(nor); #ifdef MAT_VELOCITY vec3 prv, nxt; velocity_local_pos_get(pos, gl_VertexID, prv, nxt); /* FIXME(fclem): Evaluating before displacement avoid displacement being treated as motion but * ignores motion from animated displacement. Supporting animated displacement motion vectors * would require evaluating the nodetree multiple time with different nodetree UBOs evaluated at * different times, but also with different attributes (maybe we could assume static attribute at * least). */ velocity_vertex(prv, pos, nxt, motion.prev, motion.next); #endif init_globals(); attrib_load(); interp.P += nodetree_displacement(); gl_Position = point_world_to_ndc(interp.P); }