You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

32 lines
816 B

import TempNode from '../core/TempNode.js';
import { vec2, add, sub, mul, cos, sin } from '../shadernode/ShaderNodeBaseElements.js';
class RotateUVNode extends TempNode {
constructor( uvNode, rotationNode, centerNode = vec2( .5 ) ) {
super( 'vec2' );
this.uvNode = uvNode;
this.rotationNode = rotationNode;
this.centerNode = centerNode;
}
construct() {
const { uvNode, rotationNode, centerNode } = this;
const cosAngle = cos( rotationNode );
const sinAngle = sin( rotationNode );
return vec2(
add( add( mul( cosAngle, sub( uvNode.x, centerNode.x ) ), mul( sinAngle, sub( uvNode.y, centerNode.y ) ) ), centerNode.x ),
add( sub( mul( cosAngle, sub( uvNode.y, centerNode.y ) ), mul( sinAngle, sub( uvNode.x, centerNode.x ) ) ), centerNode.y )
);
}
}
export default RotateUVNode;