Spaces:
Running
Running
export default /* glsl */` | |
uniform float rotation; | |
uniform vec2 center; | |
#include <common> | |
#include <uv_pars_vertex> | |
#include <fog_pars_vertex> | |
#include <logdepthbuf_pars_vertex> | |
#include <clipping_planes_pars_vertex> | |
void main() { | |
#include <uv_vertex> | |
vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); | |
vec2 scale; | |
scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); | |
scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); | |
#ifndef USE_SIZEATTENUATION | |
bool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); | |
if ( isPerspective ) scale *= - mvPosition.z; | |
#endif | |
vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; | |
vec2 rotatedPosition; | |
rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; | |
rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; | |
mvPosition.xy += rotatedPosition; | |
gl_Position = projectionMatrix * mvPosition; | |
#include <logdepthbuf_vertex> | |
#include <clipping_planes_vertex> | |
#include <fog_vertex> | |
} | |
`; | |