uniform vec3 windDir; #ifdef Explicit_Attrib_Location_Usable layout(location = 0) in vec3 Position; layout(location = 1) in vec3 Normal; layout(location = 2) in vec4 Color; layout(location = 3) in vec2 Texcoord; layout(location = 7) in vec3 Origin; layout(location = 8) in vec3 Orientation; layout(location = 9) in vec3 Scale; layout(location = 10) in vec4 misc_data; #ifdef Use_Bindless_Texture layout(location = 11) in sampler2D Handle; layout(location = 12) in sampler2D SecondHandle; layout(location = 13) in sampler2D ThirdHandle; #endif #else in vec3 Position; in vec3 Normal; in vec4 Color; in vec2 Texcoord; in vec3 Origin; in vec3 Orientation; in vec3 Scale; in vec4 misc_data; #endif out vec3 nor; out vec2 uv; flat out vec2 color_change; #ifdef Use_Bindless_Texture flat out sampler2D handle; flat out sampler2D secondhandle; flat out sampler2D thirdhandle; #endif #stk_include "utils/getworldmatrix.vert" void main() { vec3 test = sin(windDir * (Position.y* 0.5)) * 0.5; test += cos(windDir) * 0.7; mat4 ModelMatrix = getWorldMatrix(Origin + test * Color.r, Orientation, Scale); mat4 TransposeInverseModelView = transpose(getInverseWorldMatrix(Origin + test * Color.r, Orientation, Scale) * InverseViewMatrix); gl_Position = ProjectionViewMatrix * ModelMatrix * vec4(Position, 1.); nor = (TransposeInverseModelView * vec4(Normal, 0.)).xyz; uv = Texcoord; color_change = misc_data.zw; #ifdef Use_Bindless_Texture handle = Handle; secondhandle = SecondHandle; thirdhandle = ThirdHandle; #endif }