41 lines
1.4 KiB
GLSL
41 lines
1.4 KiB
GLSL
attribute vec3 in_Position;
|
|
attribute vec4 in_Colour;
|
|
attribute vec2 in_TextureCoord;
|
|
attribute vec3 in_Colour0;
|
|
attribute vec2 in_Colour1;
|
|
attribute float in_Colour2;
|
|
attribute vec3 in_Colour3;
|
|
attribute float in_Colour4;
|
|
attribute vec3 in_Colour5;
|
|
|
|
#define in_Offset in_Colour0
|
|
#define in_Scale in_Colour1
|
|
#define in_Angle in_Colour2
|
|
#define in_RotationDirection in_Colour3
|
|
#define in_Animation in_Colour4
|
|
#define in_Hsv in_Colour5
|
|
|
|
varying vec2 v_vTexcoord;
|
|
varying vec4 v_vColour;
|
|
varying vec3 v_vHsv;
|
|
|
|
mat4 rotation_matrix_3d(vec3 axis, float angle) {
|
|
float s = sin(angle);
|
|
float c = cos(angle);
|
|
float oc = 1.0 - c;
|
|
|
|
return mat4(
|
|
oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,
|
|
oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0,
|
|
oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0,
|
|
0.0, 0.0, 0.0, 1.0);
|
|
}
|
|
|
|
void main() {
|
|
mat4 rotmat = rotation_matrix_3d(in_RotationDirection, in_Angle);
|
|
vec4 pos = vec4(in_Position.xy * in_Scale, in_Position.z, 1.0) * rotmat + vec4(in_Offset, 0.0);
|
|
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * pos;
|
|
v_vColour = in_Colour;
|
|
v_vTexcoord = in_TextureCoord + vec2(in_Animation, 0.0);
|
|
v_vHsv = in_Hsv;
|
|
}
|