52 lines
1.5 KiB
Plaintext
52 lines
1.5 KiB
Plaintext
shader_type canvas_item;
|
|
|
|
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Math.gdshaderinc"
|
|
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Transform.gdshaderinc"
|
|
|
|
uniform float wipeState:hint_range(0,1) = 0;
|
|
uniform vec2 outputViewSize = vec2(1920,1080);
|
|
|
|
|
|
uniform sampler2D wipeTexture : source_color, filter_linear_mipmap, repeat_enable;
|
|
uniform vec2 wipeTextureSize = vec2( 1,1 );
|
|
uniform vec4 wipeTextureTint : source_color = vec4(0,0,0,1);
|
|
|
|
uniform float uvRotation = 0;
|
|
uniform vec2 uvRotationCenter = vec2(0 ,0);
|
|
|
|
uniform float uvScale = 1;
|
|
uniform vec2 uvScaleCenter = vec2(0 ,0);
|
|
|
|
uniform vec2 uvTranslation = vec2(0,0);
|
|
|
|
varying vec2 textureUV;
|
|
varying vec4 animatedTint;
|
|
|
|
void vertex()
|
|
{
|
|
mat3 matrix = identity_m3();
|
|
|
|
float textureAspect = wipeTextureSize.x / wipeTextureSize.y;
|
|
float viewAspect = outputViewSize.x / outputViewSize.y;
|
|
float viewRatio = viewAspect / textureAspect;
|
|
|
|
matrix *= rotatePivotAspect_m3( uvRotation * DegreesToRadians , uvRotationCenter, textureAspect * viewRatio );
|
|
|
|
vec2 rotatedScaleCenter = applyMatrix_m3v2( rotatePivot_m3( uvRotation, vec2( 0.5,0.5)), uvScaleCenter );
|
|
matrix *= scalePivot_m3( uvScale * vec2( viewRatio,1), rotatedScaleCenter );
|
|
|
|
|
|
matrix *= translate_m3( applyMatrixBase_m3v2( matrix, -uvTranslation ) );
|
|
|
|
vec2 uv = applyMatrix_m3v2( matrix, UV );
|
|
textureUV = uv;
|
|
|
|
animatedTint = wipeTextureTint;
|
|
animatedTint.a *= wipeState;
|
|
}
|
|
|
|
void fragment()
|
|
{
|
|
COLOR = texture( wipeTexture, textureUV ) * animatedTint;
|
|
}
|