#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Colors.gdshaderinc" #include "res://addons/rokojori_action_library/Runtime/Shading/Library/Math.gdshaderinc" #include "res://addons/rokojori_action_library/Runtime/Shading/Library/Transform.gdshaderinc" #include "res://addons/rokojori_action_library/Runtime/Shading/Library/Depth.gdshaderinc" #include "res://addons/rokojori_action_library/Runtime/Shading/Library/SDF.gdshaderinc" #include "res://addons/rokojori_action_library/Runtime/Shading/Library/Noise.gdshaderinc" void setFlareOffsetMatrix( inout mat4 _MODELVIEW_MATRIX, mat4 _VIEW_MATRIX, mat4 _MAIN_CAM_INV_VIEW_MATRIX, mat4 _MODEL_MATRIX, vec2 _screenOffsetScale, vec2 _offset ) { _MODELVIEW_MATRIX = _VIEW_MATRIX * mat4( _MAIN_CAM_INV_VIEW_MATRIX[ 0 ], _MAIN_CAM_INV_VIEW_MATRIX[ 1 ], _MAIN_CAM_INV_VIEW_MATRIX[ 2 ], _MODEL_MATRIX[ 3 ] ); vec3 _viewPosition = _MODELVIEW_MATRIX[ 3 ].xyz; _viewPosition.xy += _viewPosition.xy * _screenOffsetScale + _offset; _MODELVIEW_MATRIX[ 3 ].xyz = _viewPosition; } void setFlareScaleRotation( inout mat4 _MODELVIEW_MATRIX, inout mat3 _MODELVIEW_NORMAL_MATRIX, mat4 _MODEL_MATRIX, vec3 _scale, float _vertexRotation ) { // _MODELVIEW_MATRIX = _VIEW_MATRIX * mat4( // _MAIN_CAM_INV_VIEW_MATRIX[ 0 ], // _MAIN_CAM_INV_VIEW_MATRIX[ 1 ], // _MAIN_CAM_INV_VIEW_MATRIX[ 2 ], // _MODEL_MATRIX[ 3 ] // ); // vec3 _viewPosition = _MODELVIEW_MATRIX[ 3 ].xyz; // _viewPosition.xy += _viewPosition.xy * _screenOffsetScale; // _MODELVIEW_MATRIX[ 3 ].xyz = _viewPosition; float _scaleX = length( _MODEL_MATRIX[ 0 ].xyz ) * _scale.x; float _scaleY = length( _MODEL_MATRIX[ 1 ].xyz ) * _scale.y; float _scaleZ = length( _MODEL_MATRIX[ 2 ].xyz ) * _scale.z; _MODELVIEW_MATRIX = _MODELVIEW_MATRIX * rotationZ_m4( _vertexRotation ) * mat4( vec4( _scaleX, 0.0, 0.0, 0.0 ), vec4( 0.0, _scaleY, 0.0, 0.0 ), vec4( 0.0, 0.0, _scaleZ, 0.0 ), vec4( 0.0, 0.0, 0.0, 1.0 ) ) ; _MODELVIEW_NORMAL_MATRIX = mat3( _MODELVIEW_MATRIX ); }