This commit is contained in:
Josef 2026-02-06 09:59:59 +01:00
parent 68917d081a
commit 537926b050
188 changed files with 9394 additions and 1412 deletions

341
Icons/FlareLayer.svg Normal file
View File

@ -0,0 +1,341 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="FlareLayer.svg"
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
id="linearGradient3"
inkscape:collect="never"><stop
style="stop-color:#d83636;stop-opacity:0.83529412;"
offset="0.2804164"
id="stop6" /><stop
style="stop-color:#d83636;stop-opacity:0;"
offset="1"
id="stop5" /></linearGradient><linearGradient
id="linearGradient2"
inkscape:collect="never"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop2" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient3601"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3597" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3599" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1387"><stop
style="stop-color:#f70000;stop-opacity:1;"
offset="0"
id="stop1365" /><stop
style="stop-color:#fa7207;stop-opacity:1;"
offset="0.15848443"
id="stop1367" /><stop
style="stop-color:#ffce12;stop-opacity:1;"
offset="0.30084926"
id="stop1369" /><stop
style="stop-color:#a1e00a;stop-opacity:1;"
offset="0.37199998"
id="stop1371" /><stop
style="stop-color:#24f800;stop-opacity:1;"
offset="0.44346777"
id="stop1373" /><stop
style="stop-color:#1beda1;stop-opacity:1;"
offset="0.51599997"
id="stop1375" /><stop
style="stop-color:#18e9e9;stop-opacity:1;"
offset="0.56800002"
id="stop1377" /><stop
style="stop-color:#1e97ff;stop-opacity:1;"
offset="0.64159107"
id="stop1379" /><stop
style="stop-color:#272eff;stop-opacity:1;"
offset="0.73000002"
id="stop1381" /><stop
style="stop-color:#f604ff;stop-opacity:1;"
offset="0.86199999"
id="stop1383" /><stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop1385" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1237"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop1233" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop1235" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1229"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop1225" /><stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop1227" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient13704"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop13700" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop13702" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient10604"><stop
style="stop-color:#18e9e8;stop-opacity:1;"
offset="0"
id="stop10600" /><stop
style="stop-color:#18e9e8;stop-opacity:0;"
offset="1"
id="stop10602" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1024"><stop
style="stop-color:#f70000;stop-opacity:1;"
offset="0"
id="stop1020" /><stop
style="stop-color:#fa7207;stop-opacity:1;"
offset="0.15848443"
id="stop1149" /><stop
style="stop-color:#ffce12;stop-opacity:1;"
offset="0.30084926"
id="stop1096" /><stop
style="stop-color:#a1e00a;stop-opacity:1;"
offset="0.37199998"
id="stop1153" /><stop
style="stop-color:#24f800;stop-opacity:1;"
offset="0.44346777"
id="stop1092" /><stop
style="stop-color:#1beda1;stop-opacity:1;"
offset="0.51599997"
id="stop1151" /><stop
style="stop-color:#18e9e9;stop-opacity:1;"
offset="0.56800002"
id="stop1098" /><stop
style="stop-color:#1e97ff;stop-opacity:1;"
offset="0.64159107"
id="stop1155" /><stop
style="stop-color:#272eff;stop-opacity:1;"
offset="0.73000002"
id="stop1094" /><stop
style="stop-color:#f604ff;stop-opacity:1;"
offset="0.86199999"
id="stop1100" /><stop
style="stop-color:#ff0202;stop-opacity:1;"
offset="1"
id="stop1022" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /><linearGradient
inkscape:collect="never"
xlink:href="#linearGradient1024"
id="linearGradient1026"
x1="20.242241"
y1="33.851089"
x2="37.684772"
y2="46.330421"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0816006,0,0,1.0816006,-2.5901136,-2.8438444)" /><linearGradient
xlink:href="#linearGradient1024"
id="linearGradient10606"
x1="13.452065"
y1="32.650345"
x2="48.054203"
y2="44.499554"
gradientUnits="userSpaceOnUse" /><linearGradient
inkscape:collect="never"
xlink:href="#linearGradient13704"
id="linearGradient13706"
x1="18.869927"
y1="34.850642"
x2="44.631165"
y2="34.850642"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#linearGradient73856"
id="radialGradient73858"
cx="30.094763"
cy="30.901455"
fx="30.094763"
fy="30.901455"
r="11.518468"
gradientTransform="matrix(1.9666691,0,0,2.2620107,-3.8943114,-30.031019)"
gradientUnits="userSpaceOnUse" /><linearGradient
id="linearGradient73856"><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop73852" /><stop
style="stop-color:#f7f8f9;stop-opacity:1;"
offset="0.15093437"
id="stop77494" /><stop
style="stop-color:#ccd0d6;stop-opacity:1;"
offset="0.53578031"
id="stop73860" /><stop
style="stop-color:#516499;stop-opacity:1;"
offset="1"
id="stop73854" /></linearGradient><linearGradient
xlink:href="#linearGradient77490"
id="linearGradient77492"
x1="15.632637"
y1="25.657946"
x2="36.755505"
y2="51.227448"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.86580682,0,0,0.86580682,29.854566,16.268675)" /><linearGradient
id="linearGradient77490"><stop
style="stop-color:#62697d;stop-opacity:0.4700855;"
offset="0"
id="stop77486" /><stop
style="stop-color:#9f9f9f;stop-opacity:0.49019608;"
offset="0.30279347"
id="stop36247" /><stop
style="stop-color:#444a5a;stop-opacity:0.50196078;"
offset="0.47589374"
id="stop36239" /><stop
style="stop-color:#393e4d;stop-opacity:0.50980392;"
offset="0.64751673"
id="stop36245" /><stop
style="stop-color:#6b7695;stop-opacity:0.52156866;"
offset="0.76340932"
id="stop36241" /><stop
style="stop-color:#2e323f;stop-opacity:0.5254902;"
offset="0.83444887"
id="stop36243" /><stop
style="stop-color:#252834;stop-opacity:0.54131055;"
offset="1"
id="stop77488" /></linearGradient><linearGradient
xlink:href="#linearGradient1229"
id="linearGradient1231"
x1="50.526161"
y1="37.883831"
x2="67.256447"
y2="53.176914"
gradientUnits="userSpaceOnUse"
inkscape:collect="never"
gradientTransform="matrix(1.2173809,0,0,1.2173809,6.9577154,-23.917781)" /><linearGradient
xlink:href="#linearGradient1387"
id="linearGradient1239"
x1="50.526161"
y1="37.883831"
x2="67.256447"
y2="53.176914"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2173809,0,0,1.2173809,6.9577154,-23.917781)" /><linearGradient
xlink:href="#linearGradient1024"
id="linearGradient3603"
x1="26.842001"
y1="27.440641"
x2="43.276413"
y2="45.617104"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-3.6320054,-0.42729918)" /><radialGradient
inkscape:collect="never"
xlink:href="#linearGradient2"
id="radialGradient3"
cx="47.831398"
cy="2.4104715"
fx="47.831398"
fy="2.4104715"
r="15.008372"
gradientUnits="userSpaceOnUse" /><radialGradient
inkscape:collect="never"
xlink:href="#linearGradient3"
id="radialGradient5"
cx="32.117443"
cy="35.526367"
fx="32.117443"
fy="35.526367"
r="13.498731"
gradientTransform="matrix(1,0,0,1.0568721,1.7923447e-6,-2.0204599)"
gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="8.0000004"
inkscape:cx="-15.624999"
inkscape:cy="20.562499"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g2210"
showguides="false" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><ellipse
style="opacity:1;fill:#9f2f55;fill-opacity:0.771966;stroke-width:2.99955;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:3.6;paint-order:stroke fill markers"
id="path1"
cx="32.117443"
cy="35.526367"
rx="14.032981"
ry="14.831065" /><path
id="path2"
style="opacity:1;fill:#f2c1c1;fill-opacity:1;stroke-width:3.68130792;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:3.6;paint-order:stroke fill markers;stroke:#f23434;stroke-opacity:1;stroke-dasharray:none"
d="M 32.952673 2.168975 A 15.00837 1.8457839 0 0 0 32.823027 2.4104715 A 15.00837 1.8457839 0 0 0 42.121913 4.1187413 A 5.7860374 6.1179051 45 0 0 43.710705 7.4513927 A 5.7860374 6.1179051 45 0 0 46.163801 8.8724088 A 15.00837 1.8457839 90 0 0 47.831398 17.418842 A 15.00837 1.8457839 90 0 0 49.504078 8.806315 A 5.7860374 6.1179051 45 0 0 52.130035 7.2175224 A 5.7860374 6.1179051 45 0 0 53.848473 4.1009468 A 15.00837 1.8457839 0 0 0 62.839768 2.4104715 A 15.00837 1.8457839 0 0 0 53.606977 0.70728585 A 5.7860374 6.1179051 45 0 0 52.363905 -1.2018073 A 5.7860374 6.1179051 45 0 0 49.565088 -2.7041696 A 15.00837 1.8457839 90 0 0 47.831398 -12.597899 A 15.00837 1.8457839 90 0 0 46.082455 -2.3787849 A 5.7860374 6.1179051 45 0 0 43.947118 -0.965395 A 5.7860374 6.1179051 45 0 0 42.75743 0.67169689 A 15.00837 1.8457839 0 0 0 32.952673 2.168975 z "
transform="rotate(45)" /><ellipse
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.68131;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:3.6;stroke-opacity:1;paint-order:stroke fill markers"
id="path3"
cx="31.649044"
cy="35.854084"
rx="4.0199261"
ry="4.2035775" /></g></svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dwi8fojg2liiy"
path="res://.godot/imported/FlareLayer.svg-e1353f58817cb61a716788afff27f399.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/FlareLayer.svg"
dest_files=["res://.godot/imported/FlareLayer.svg-e1353f58817cb61a716788afff27f399.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

341
Icons/FlarePreset.svg Normal file
View File

@ -0,0 +1,341 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="FlarePreset.svg"
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
id="linearGradient3"
inkscape:collect="never"><stop
style="stop-color:#d83636;stop-opacity:0.83529412;"
offset="0.2804164"
id="stop6" /><stop
style="stop-color:#d83636;stop-opacity:0;"
offset="1"
id="stop5" /></linearGradient><linearGradient
id="linearGradient2"
inkscape:collect="never"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop2" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient3601"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3597" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3599" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1387"><stop
style="stop-color:#f70000;stop-opacity:1;"
offset="0"
id="stop1365" /><stop
style="stop-color:#fa7207;stop-opacity:1;"
offset="0.15848443"
id="stop1367" /><stop
style="stop-color:#ffce12;stop-opacity:1;"
offset="0.30084926"
id="stop1369" /><stop
style="stop-color:#a1e00a;stop-opacity:1;"
offset="0.37199998"
id="stop1371" /><stop
style="stop-color:#24f800;stop-opacity:1;"
offset="0.44346777"
id="stop1373" /><stop
style="stop-color:#1beda1;stop-opacity:1;"
offset="0.51599997"
id="stop1375" /><stop
style="stop-color:#18e9e9;stop-opacity:1;"
offset="0.56800002"
id="stop1377" /><stop
style="stop-color:#1e97ff;stop-opacity:1;"
offset="0.64159107"
id="stop1379" /><stop
style="stop-color:#272eff;stop-opacity:1;"
offset="0.73000002"
id="stop1381" /><stop
style="stop-color:#f604ff;stop-opacity:1;"
offset="0.86199999"
id="stop1383" /><stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop1385" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1237"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop1233" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop1235" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1229"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop1225" /><stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop1227" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient13704"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop13700" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop13702" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient10604"><stop
style="stop-color:#18e9e8;stop-opacity:1;"
offset="0"
id="stop10600" /><stop
style="stop-color:#18e9e8;stop-opacity:0;"
offset="1"
id="stop10602" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1024"><stop
style="stop-color:#f70000;stop-opacity:1;"
offset="0"
id="stop1020" /><stop
style="stop-color:#fa7207;stop-opacity:1;"
offset="0.15848443"
id="stop1149" /><stop
style="stop-color:#ffce12;stop-opacity:1;"
offset="0.30084926"
id="stop1096" /><stop
style="stop-color:#a1e00a;stop-opacity:1;"
offset="0.37199998"
id="stop1153" /><stop
style="stop-color:#24f800;stop-opacity:1;"
offset="0.44346777"
id="stop1092" /><stop
style="stop-color:#1beda1;stop-opacity:1;"
offset="0.51599997"
id="stop1151" /><stop
style="stop-color:#18e9e9;stop-opacity:1;"
offset="0.56800002"
id="stop1098" /><stop
style="stop-color:#1e97ff;stop-opacity:1;"
offset="0.64159107"
id="stop1155" /><stop
style="stop-color:#272eff;stop-opacity:1;"
offset="0.73000002"
id="stop1094" /><stop
style="stop-color:#f604ff;stop-opacity:1;"
offset="0.86199999"
id="stop1100" /><stop
style="stop-color:#ff0202;stop-opacity:1;"
offset="1"
id="stop1022" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /><linearGradient
inkscape:collect="never"
xlink:href="#linearGradient1024"
id="linearGradient1026"
x1="20.242241"
y1="33.851089"
x2="37.684772"
y2="46.330421"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0816006,0,0,1.0816006,-2.5901136,-2.8438444)" /><linearGradient
xlink:href="#linearGradient1024"
id="linearGradient10606"
x1="13.452065"
y1="32.650345"
x2="48.054203"
y2="44.499554"
gradientUnits="userSpaceOnUse" /><linearGradient
inkscape:collect="never"
xlink:href="#linearGradient13704"
id="linearGradient13706"
x1="18.869927"
y1="34.850642"
x2="44.631165"
y2="34.850642"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#linearGradient73856"
id="radialGradient73858"
cx="30.094763"
cy="30.901455"
fx="30.094763"
fy="30.901455"
r="11.518468"
gradientTransform="matrix(1.9666691,0,0,2.2620107,-3.8943114,-30.031019)"
gradientUnits="userSpaceOnUse" /><linearGradient
id="linearGradient73856"><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop73852" /><stop
style="stop-color:#f7f8f9;stop-opacity:1;"
offset="0.15093437"
id="stop77494" /><stop
style="stop-color:#ccd0d6;stop-opacity:1;"
offset="0.53578031"
id="stop73860" /><stop
style="stop-color:#516499;stop-opacity:1;"
offset="1"
id="stop73854" /></linearGradient><linearGradient
xlink:href="#linearGradient77490"
id="linearGradient77492"
x1="15.632637"
y1="25.657946"
x2="36.755505"
y2="51.227448"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.86580682,0,0,0.86580682,29.854566,16.268675)" /><linearGradient
id="linearGradient77490"><stop
style="stop-color:#62697d;stop-opacity:0.4700855;"
offset="0"
id="stop77486" /><stop
style="stop-color:#9f9f9f;stop-opacity:0.49019608;"
offset="0.30279347"
id="stop36247" /><stop
style="stop-color:#444a5a;stop-opacity:0.50196078;"
offset="0.47589374"
id="stop36239" /><stop
style="stop-color:#393e4d;stop-opacity:0.50980392;"
offset="0.64751673"
id="stop36245" /><stop
style="stop-color:#6b7695;stop-opacity:0.52156866;"
offset="0.76340932"
id="stop36241" /><stop
style="stop-color:#2e323f;stop-opacity:0.5254902;"
offset="0.83444887"
id="stop36243" /><stop
style="stop-color:#252834;stop-opacity:0.54131055;"
offset="1"
id="stop77488" /></linearGradient><linearGradient
xlink:href="#linearGradient1229"
id="linearGradient1231"
x1="50.526161"
y1="37.883831"
x2="67.256447"
y2="53.176914"
gradientUnits="userSpaceOnUse"
inkscape:collect="never"
gradientTransform="matrix(1.2173809,0,0,1.2173809,6.9577154,-23.917781)" /><linearGradient
xlink:href="#linearGradient1387"
id="linearGradient1239"
x1="50.526161"
y1="37.883831"
x2="67.256447"
y2="53.176914"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2173809,0,0,1.2173809,6.9577154,-23.917781)" /><linearGradient
xlink:href="#linearGradient1024"
id="linearGradient3603"
x1="26.842001"
y1="27.440641"
x2="43.276413"
y2="45.617104"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-3.6320054,-0.42729918)" /><radialGradient
inkscape:collect="never"
xlink:href="#linearGradient2"
id="radialGradient3"
cx="47.831398"
cy="2.4104715"
fx="47.831398"
fy="2.4104715"
r="15.008372"
gradientUnits="userSpaceOnUse" /><radialGradient
inkscape:collect="never"
xlink:href="#linearGradient3"
id="radialGradient5"
cx="32.117443"
cy="35.526367"
fx="32.117443"
fy="35.526367"
r="13.498731"
gradientTransform="matrix(1,0,0,1.0568721,1.7923447e-6,-2.0204599)"
gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="11.313709"
inkscape:cx="5.8336307"
inkscape:cy="14.274718"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g2210"
showguides="false" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><ellipse
style="opacity:1;fill:#9f2f55;fill-opacity:0.771966;stroke-width:2.99955;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:3.6;paint-order:stroke fill markers"
id="path1"
cx="32.117443"
cy="35.526367"
rx="14.032981"
ry="14.831065" /><path
id="path2"
style="opacity:1;fill:#f2c1c1;fill-opacity:1;stroke-width:3.68130792;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:3.6;paint-order:stroke fill markers;stroke:#f23434;stroke-opacity:1;stroke-dasharray:none"
d="M 32.952673 2.168975 A 15.00837 1.8457839 0 0 0 32.823027 2.4104715 A 15.00837 1.8457839 0 0 0 42.121913 4.1187413 A 5.7860374 6.1179051 45 0 0 43.710705 7.4513927 A 5.7860374 6.1179051 45 0 0 46.163801 8.8724088 A 15.00837 1.8457839 90 0 0 47.831398 17.418842 A 15.00837 1.8457839 90 0 0 49.504078 8.806315 A 5.7860374 6.1179051 45 0 0 52.130035 7.2175224 A 5.7860374 6.1179051 45 0 0 53.848473 4.1009468 A 15.00837 1.8457839 0 0 0 62.839768 2.4104715 A 15.00837 1.8457839 0 0 0 53.606977 0.70728585 A 5.7860374 6.1179051 45 0 0 52.363905 -1.2018073 A 5.7860374 6.1179051 45 0 0 49.565088 -2.7041696 A 15.00837 1.8457839 90 0 0 47.831398 -12.597899 A 15.00837 1.8457839 90 0 0 46.082455 -2.3787849 A 5.7860374 6.1179051 45 0 0 43.947118 -0.965395 A 5.7860374 6.1179051 45 0 0 42.75743 0.67169689 A 15.00837 1.8457839 0 0 0 32.952673 2.168975 z "
transform="rotate(45)" /><ellipse
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.68131;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:3.6;stroke-opacity:1;paint-order:stroke fill markers"
id="path3"
cx="31.649044"
cy="35.854084"
rx="4.0199261"
ry="4.2035775" /></g></svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cnlcxdt2wtmkm"
path="res://.godot/imported/FlarePreset.svg-857e6afe476b69ed548435249c549c84.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/FlarePreset.svg"
dest_files=["res://.godot/imported/FlarePreset.svg-857e6afe476b69ed548435249c549c84.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

341
Icons/FlareVFX.svg Normal file
View File

@ -0,0 +1,341 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="FlareVFX.svg"
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
id="linearGradient3"
inkscape:collect="never"><stop
style="stop-color:#d83636;stop-opacity:0.83529412;"
offset="0.2804164"
id="stop6" /><stop
style="stop-color:#d83636;stop-opacity:0;"
offset="1"
id="stop5" /></linearGradient><linearGradient
id="linearGradient2"
inkscape:collect="never"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop2" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient3601"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3597" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3599" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1387"><stop
style="stop-color:#f70000;stop-opacity:1;"
offset="0"
id="stop1365" /><stop
style="stop-color:#fa7207;stop-opacity:1;"
offset="0.15848443"
id="stop1367" /><stop
style="stop-color:#ffce12;stop-opacity:1;"
offset="0.30084926"
id="stop1369" /><stop
style="stop-color:#a1e00a;stop-opacity:1;"
offset="0.37199998"
id="stop1371" /><stop
style="stop-color:#24f800;stop-opacity:1;"
offset="0.44346777"
id="stop1373" /><stop
style="stop-color:#1beda1;stop-opacity:1;"
offset="0.51599997"
id="stop1375" /><stop
style="stop-color:#18e9e9;stop-opacity:1;"
offset="0.56800002"
id="stop1377" /><stop
style="stop-color:#1e97ff;stop-opacity:1;"
offset="0.64159107"
id="stop1379" /><stop
style="stop-color:#272eff;stop-opacity:1;"
offset="0.73000002"
id="stop1381" /><stop
style="stop-color:#f604ff;stop-opacity:1;"
offset="0.86199999"
id="stop1383" /><stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop1385" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1237"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop1233" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop1235" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1229"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop1225" /><stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop1227" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient13704"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop13700" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop13702" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient10604"><stop
style="stop-color:#18e9e8;stop-opacity:1;"
offset="0"
id="stop10600" /><stop
style="stop-color:#18e9e8;stop-opacity:0;"
offset="1"
id="stop10602" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient1024"><stop
style="stop-color:#f70000;stop-opacity:1;"
offset="0"
id="stop1020" /><stop
style="stop-color:#fa7207;stop-opacity:1;"
offset="0.15848443"
id="stop1149" /><stop
style="stop-color:#ffce12;stop-opacity:1;"
offset="0.30084926"
id="stop1096" /><stop
style="stop-color:#a1e00a;stop-opacity:1;"
offset="0.37199998"
id="stop1153" /><stop
style="stop-color:#24f800;stop-opacity:1;"
offset="0.44346777"
id="stop1092" /><stop
style="stop-color:#1beda1;stop-opacity:1;"
offset="0.51599997"
id="stop1151" /><stop
style="stop-color:#18e9e9;stop-opacity:1;"
offset="0.56800002"
id="stop1098" /><stop
style="stop-color:#1e97ff;stop-opacity:1;"
offset="0.64159107"
id="stop1155" /><stop
style="stop-color:#272eff;stop-opacity:1;"
offset="0.73000002"
id="stop1094" /><stop
style="stop-color:#f604ff;stop-opacity:1;"
offset="0.86199999"
id="stop1100" /><stop
style="stop-color:#ff0202;stop-opacity:1;"
offset="1"
id="stop1022" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /><linearGradient
inkscape:collect="never"
xlink:href="#linearGradient1024"
id="linearGradient1026"
x1="20.242241"
y1="33.851089"
x2="37.684772"
y2="46.330421"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0816006,0,0,1.0816006,-2.5901136,-2.8438444)" /><linearGradient
xlink:href="#linearGradient1024"
id="linearGradient10606"
x1="13.452065"
y1="32.650345"
x2="48.054203"
y2="44.499554"
gradientUnits="userSpaceOnUse" /><linearGradient
inkscape:collect="never"
xlink:href="#linearGradient13704"
id="linearGradient13706"
x1="18.869927"
y1="34.850642"
x2="44.631165"
y2="34.850642"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#linearGradient73856"
id="radialGradient73858"
cx="30.094763"
cy="30.901455"
fx="30.094763"
fy="30.901455"
r="11.518468"
gradientTransform="matrix(1.9666691,0,0,2.2620107,-3.8943114,-30.031019)"
gradientUnits="userSpaceOnUse" /><linearGradient
id="linearGradient73856"><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop73852" /><stop
style="stop-color:#f7f8f9;stop-opacity:1;"
offset="0.15093437"
id="stop77494" /><stop
style="stop-color:#ccd0d6;stop-opacity:1;"
offset="0.53578031"
id="stop73860" /><stop
style="stop-color:#516499;stop-opacity:1;"
offset="1"
id="stop73854" /></linearGradient><linearGradient
xlink:href="#linearGradient77490"
id="linearGradient77492"
x1="15.632637"
y1="25.657946"
x2="36.755505"
y2="51.227448"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.86580682,0,0,0.86580682,29.854566,16.268675)" /><linearGradient
id="linearGradient77490"><stop
style="stop-color:#62697d;stop-opacity:0.4700855;"
offset="0"
id="stop77486" /><stop
style="stop-color:#9f9f9f;stop-opacity:0.49019608;"
offset="0.30279347"
id="stop36247" /><stop
style="stop-color:#444a5a;stop-opacity:0.50196078;"
offset="0.47589374"
id="stop36239" /><stop
style="stop-color:#393e4d;stop-opacity:0.50980392;"
offset="0.64751673"
id="stop36245" /><stop
style="stop-color:#6b7695;stop-opacity:0.52156866;"
offset="0.76340932"
id="stop36241" /><stop
style="stop-color:#2e323f;stop-opacity:0.5254902;"
offset="0.83444887"
id="stop36243" /><stop
style="stop-color:#252834;stop-opacity:0.54131055;"
offset="1"
id="stop77488" /></linearGradient><linearGradient
xlink:href="#linearGradient1229"
id="linearGradient1231"
x1="50.526161"
y1="37.883831"
x2="67.256447"
y2="53.176914"
gradientUnits="userSpaceOnUse"
inkscape:collect="never"
gradientTransform="matrix(1.2173809,0,0,1.2173809,6.9577154,-23.917781)" /><linearGradient
xlink:href="#linearGradient1387"
id="linearGradient1239"
x1="50.526161"
y1="37.883831"
x2="67.256447"
y2="53.176914"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2173809,0,0,1.2173809,6.9577154,-23.917781)" /><linearGradient
xlink:href="#linearGradient1024"
id="linearGradient3603"
x1="26.842001"
y1="27.440641"
x2="43.276413"
y2="45.617104"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-3.6320054,-0.42729918)" /><radialGradient
inkscape:collect="never"
xlink:href="#linearGradient2"
id="radialGradient3"
cx="47.831398"
cy="2.4104715"
fx="47.831398"
fy="2.4104715"
r="15.008372"
gradientUnits="userSpaceOnUse" /><radialGradient
inkscape:collect="never"
xlink:href="#linearGradient3"
id="radialGradient5"
cx="32.117443"
cy="35.526367"
fx="32.117443"
fy="35.526367"
r="13.498731"
gradientTransform="matrix(1,0,0,1.0568721,1.7923447e-6,-2.0204599)"
gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="11.313709"
inkscape:cx="5.8336307"
inkscape:cy="14.274718"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g2210"
showguides="false" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><ellipse
style="opacity:1;fill:#9f2f55;fill-opacity:0.771966;stroke-width:2.99955;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:3.6;paint-order:stroke fill markers"
id="path1"
cx="32.117443"
cy="35.526367"
rx="14.032981"
ry="14.831065" /><path
id="path2"
style="opacity:1;fill:#f2c1c1;fill-opacity:1;stroke-width:3.68130792;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:3.6;paint-order:stroke fill markers;stroke:#f23434;stroke-opacity:1;stroke-dasharray:none"
d="M 32.952673 2.168975 A 15.00837 1.8457839 0 0 0 32.823027 2.4104715 A 15.00837 1.8457839 0 0 0 42.121913 4.1187413 A 5.7860374 6.1179051 45 0 0 43.710705 7.4513927 A 5.7860374 6.1179051 45 0 0 46.163801 8.8724088 A 15.00837 1.8457839 90 0 0 47.831398 17.418842 A 15.00837 1.8457839 90 0 0 49.504078 8.806315 A 5.7860374 6.1179051 45 0 0 52.130035 7.2175224 A 5.7860374 6.1179051 45 0 0 53.848473 4.1009468 A 15.00837 1.8457839 0 0 0 62.839768 2.4104715 A 15.00837 1.8457839 0 0 0 53.606977 0.70728585 A 5.7860374 6.1179051 45 0 0 52.363905 -1.2018073 A 5.7860374 6.1179051 45 0 0 49.565088 -2.7041696 A 15.00837 1.8457839 90 0 0 47.831398 -12.597899 A 15.00837 1.8457839 90 0 0 46.082455 -2.3787849 A 5.7860374 6.1179051 45 0 0 43.947118 -0.965395 A 5.7860374 6.1179051 45 0 0 42.75743 0.67169689 A 15.00837 1.8457839 0 0 0 32.952673 2.168975 z "
transform="rotate(45)" /><ellipse
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.68131;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:3.6;stroke-opacity:1;paint-order:stroke fill markers"
id="path3"
cx="31.649044"
cy="35.854084"
rx="4.0199261"
ry="4.2035775" /></g></svg>

After

Width:  |  Height:  |  Size: 13 KiB

43
Icons/FlareVFX.svg.import Normal file
View File

@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b7u8spfui08e7"
path="res://.godot/imported/FlareVFX.svg-7c0691138c416c828300e95f7f8b3111.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/FlareVFX.svg"
dest_files=["res://.godot/imported/FlareVFX.svg-7c0691138c416c828300e95f7f8b3111.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -0,0 +1,56 @@
using Godot;
namespace Rokojori
{
[Tool][GlobalClass ]
public partial class SetScreenTransform : Action
{
[Export]
public Camera3D source;
[Export]
public Node3D target;
[Export]
public Vector3 screenPosition;
protected override void _OnTrigger()
{
var applyingSource = source;
if ( Engine.IsEditorHint() )
{
#if TOOLS
applyingSource = EditorInterface.Singleton.GetEditorViewport3D().GetCamera3D();
#endif
}
if ( source == null )
{
return;
}
target.GlobalPosition = NormalizedScreenToWorld( applyingSource, screenPosition.XY(), screenPosition.Z );
target.SetGlobalQuaternion( applyingSource.GlobalQuaternion() );
}
public static Vector3 NormalizedScreenToWorld( Camera3D camera, Vector2 normalizedPos, float depth )
{
var viewPort = camera.GetViewport();
var viewportSize = viewPort.GetVisibleRect().Size;
var screenPixelPos = new Vector2(
normalizedPos.X * viewportSize.X,
normalizedPos.Y * viewportSize.Y
);
return camera.ProjectPosition(screenPixelPos, depth);
}
}
}

View File

@ -0,0 +1 @@
uid://cf5jsfq6agufc

View File

@ -0,0 +1,22 @@
using Godot;
namespace Rokojori
{
[Tool]
[GlobalClass ]
public partial class SetLabelText : Action
{
[Export]
public Label3D label;
[Export]
public string text;
protected override void _OnTrigger()
{
label.Text = text;
}
}
}

View File

@ -0,0 +1 @@
uid://bvomnqpw05n5w

View File

@ -5,6 +5,22 @@ namespace Rokojori
{
public static class ColorX
{
public static float GetColorScale( this Color c )
{
return Mathf.Max( 1f, Mathf.Max( c.R, Mathf.Max( c.G, c.B ) ) );
}
public static Color ScaleColor( this Color c, float scale )
{
return new Color( c.R * scale, c.G * scale, c.B * scale, c.A );
}
public static HSLColor ToHSL( this Color c, float scale = 1f )
{
return HSLColor.FromRGBA( c.ScaleColor( 1f / scale ) );
}
public static float r( this Vector4 rgba )
{
return rgba.X;

View File

@ -174,6 +174,43 @@ namespace Rokojori
return new HSLColor( h, s, l, a );
}
static float modPolarDegrees( float value )
{
return MathX.Repeat( value + 180.0f, 360.0f ) - 180.0f;
}
public static float hue360ToYB( float hue )
{
return modPolarDegrees( hue - 240.0f );
}
public static float ybToHue360( float yb )
{
return ( yb + 240.0f ) % 360.0f;
}
public static float changeHue360( float hue, float change )
{
float yb = hue360ToYB( hue );
float absYB = Mathf.Abs( yb );
absYB = Mathf.Clamp( absYB + change, 0.0f, 180.0f );
float realYB = Mathf.Sign( yb ) * absYB;
return ybToHue360( realYB );
}
public static float ShiftTemparatureOfHue( float hue, float offset, float blendRadius = 60f )
{
float distanceToYellow = Mathf.Min( 1.0f, Mathf.Abs( hue - 60.0f ) / blendRadius );
float distanceToBlue = Mathf.Min( 1.0f, Mathf.Abs( hue - 240.0f ) / blendRadius );
return changeHue360( hue, offset * distanceToYellow * distanceToBlue );
}
public static Color Lerp( Color x, Color y, float t )
{
var hx = new HSLColor( x );
@ -185,7 +222,7 @@ namespace Rokojori
}
public Color ToRGBA()
public Color ToRGBA( float scale = 1 )
{
var r = 0f;
var g = 0f;
@ -208,6 +245,10 @@ namespace Rokojori
b = Value( m1, m2, h - 120f );
}
r *= scale;
g *= scale;
b *= scale;
return new Color( r, g, b, a );
}

View File

@ -304,6 +304,15 @@ namespace Rokojori
public static string Normalize( string path, bool removeFirst = true, bool removeLast = true )
{
var protocollStart = path.IndexOf( "://" );
var protocoll = "";
if ( protocollStart != -1 )
{
protocoll = path.Substring( 0, protocollStart + 3 );
path = path.Substring( protocollStart + 3 );
}
path = Regex.Replace( path, @"\\", "/" );
path = Regex.Replace( path, @"/+", "/" );
@ -317,9 +326,7 @@ namespace Rokojori
path = Regex.Replace( path, @"/$", "" );
}
return path;
return protocoll + path;
}
public static string Join( params string[] paths )

View File

@ -104,6 +104,11 @@ namespace Rokojori
public static List<FilePath> GetFiles( string path, System.Func<FilePath,bool> evaluator = null, bool recursive = false )
{
if ( ! Directory.Exists( path ) )
{
return [];
}
var list = new List<FilePath>();
var files = Directory.GetFiles( path, "*", recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly );

View File

@ -0,0 +1,12 @@
using Godot;
using System.Text;
using System.Collections.Generic;
namespace Rokojori
{
public class ResourceRunner<R,D,P> where R:Resource where P:Node
{
public D data;
}
}

View File

@ -0,0 +1 @@
uid://b0iux3mchi43r

View File

@ -12,5 +12,21 @@ namespace Rokojori
{
public static readonly string AddonLibraryPath = "res://addons/rokojori_action_library/";
public static readonly string RuntimePath = "res://addons/rokojori_action_library/Runtime/";
public static string ProjectPath()
{
return ProjectSettings.GlobalizePath( "res://" );
}
public static string ToGlobal( string path )
{
if ( path.StartsWith( "res://" ) )
{
return path.Replace( "res://", ProjectPath() );
}
return path;
}
}
}

View File

@ -0,0 +1,14 @@
using System.Collections;
using System.Collections.Generic;
using Godot;
using System;
using System.Threading.Tasks;
namespace Rokojori
{
[GlobalClass,Tool]
public partial class ExtendedMesh:Mesh
{
}
}

View File

@ -0,0 +1 @@
uid://lf7pc0al3lb8

View File

@ -0,0 +1,26 @@
using System.Collections;
using System.Collections.Generic;
using Godot;
using System;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class MeshGenerator:Node
{
[Export]
public MeshGeneratorType generator;
[ExportToolButton( "Generate")]
public Callable generateButton => Callable.From( ()=>{ mesh = generator.Generate(); } );
[Export]
public ArrayMesh mesh;
}
}

View File

@ -0,0 +1 @@
uid://csr18y8chfxwo

View File

@ -0,0 +1,91 @@
using System.Collections;
using System.Collections.Generic;
using Godot;
using System;
namespace Rokojori
{
[Tool]
[GlobalClass]
public abstract partial class MeshGeneratorType:Resource
{
[Export]
public bool cacheMeshes = true;
public static readonly string cachePath = "res://.rokojori/cache/MeshGeneratorType";
public static string GetProjectCachePath( string cacheName )
{
return FilePath.Join( cachePath, cacheName + ".tres" );
}
public static ArrayMesh FromCache( string cacheName )
{
var path = GetProjectCachePath( cacheName );
var globalPath = Paths.ToGlobal( path );
RJLog.Log( path, globalPath );
if ( ! FilesSync.FileExists( globalPath ) )
{
return null;
}
return GD.Load<ArrayMesh>( path );
}
public static void ToCache( string cacheName, ArrayMesh arrayMesh )
{
var path = GetProjectCachePath( cacheName );
var globalPath = Paths.ToGlobal( path );
RJLog.Log( path, globalPath );
FilesSync.EnsureParentDirectoryExists( globalPath );
ResourceSaver.Save( arrayMesh, path, ResourceSaver.SaverFlags.Compress );
}
public ArrayMesh Generate()
{
var cachePath = GetCachePath();
if ( cachePath != null && Engine.IsEditorHint() )
{
this.LogInfo( "Checking cache for:", cachePath );
var cached = FromCache( cachePath );
if ( cached != null )
{
this.LogInfo( "Found cache for:", cachePath, cached.SurfaceGetArrayLen( 0 ) );
return cached;
}
this.LogInfo( "Not cached:", cachePath );
}
var mg = _GenerateMeshGeometry();
var arrayMesh = mg.GenerateMesh();
if ( cachePath != null && Engine.IsEditorHint() )
{
this.LogInfo( "To cache:", cachePath, arrayMesh.SurfaceGetArrayLen( 0 ) );
ToCache( cachePath, arrayMesh );
return FromCache( cachePath );
}
return arrayMesh;
}
protected abstract string GetCachePath();
protected abstract MeshGeometry _GenerateMeshGeometry();
}
}

View File

@ -0,0 +1 @@
uid://bv1dvb053gokl

View File

@ -0,0 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using Godot;
using System;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class UnitBillboardQuadsGenerator:MeshGeneratorType
{
[Export]
public int num = 1;
protected override string GetCachePath()
{
return "UnitBillboardQuadsGenerator-" + num;
}
protected override MeshGeometry _GenerateMeshGeometry()
{
return MeshGeometry.UnitBillboardQuads( num, 0f, 1f );
}
}
}

View File

@ -0,0 +1 @@
uid://djb5k01vcut20

View File

@ -863,7 +863,7 @@ namespace Rokojori
for ( int i = 0; i < num; i++ )
{
var t = num == 1 ? 0 : i / ( num - 1f );
var t = num <= 1 ? 0.5f : i / ( num - 1f );
var z = Mathf.Lerp( zMin, zMax, t );
var quad = BillboardQuad( 1f, z );

View File

@ -63,7 +63,7 @@ height = 1
noise = SubResource("FastNoiseLite_gxlxg")
seamless = true
[sub_resource type="CompositorEffect" id="CompositorEffect_mdsx3"]
[sub_resource type="CompositorEffect" id="CompositorEffect_fv6nb"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -115,7 +115,7 @@ height = 256
noise = SubResource("FastNoiseLite_w6tyf")
seamless = true
[sub_resource type="CompositorEffect" id="CompositorEffect_wpvj8"]
[sub_resource type="CompositorEffect" id="CompositorEffect_faje8"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -155,7 +155,7 @@ metadata/_custom_type_script = "uid://dvvfvlutisecy"
script = ExtResource("3_55j2s")
owner = SubResource("Resource_i5utj")
[sub_resource type="CompositorEffect" id="CompositorEffect_ysmsc"]
[sub_resource type="CompositorEffect" id="CompositorEffect_55j2s"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -201,7 +201,7 @@ metadata/_custom_type_script = "uid://dvvfvlutisecy"
script = ExtResource("3_55j2s")
owner = SubResource("Resource_i5utj")
[sub_resource type="CompositorEffect" id="CompositorEffect_t5au6"]
[sub_resource type="CompositorEffect" id="CompositorEffect_rxqvv"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -234,5 +234,5 @@ metadata/_custom_type_script = "uid://6jkixa201wux"
[resource]
script = ExtResource("8_v2hqv")
effects = [SubResource("CompositorEffect_mdsx3"), SubResource("CompositorEffect_wpvj8"), SubResource("CompositorEffect_ysmsc"), SubResource("CompositorEffect_t5au6")]
effects = [SubResource("CompositorEffect_fv6nb"), SubResource("CompositorEffect_faje8"), SubResource("CompositorEffect_55j2s"), SubResource("CompositorEffect_rxqvv")]
metadata/_custom_type_script = "uid://ckixweetchlo0"

View File

@ -47,7 +47,7 @@ fill_from = Vector2(0.5, 0.50427353)
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_g6idi"]
load_path = "res://.godot/imported/star-glow.png-61f0458024aeba1668f3516b3db84782.ctex"
[sub_resource type="CompositorEffect" id="CompositorEffect_ixqtu"]
[sub_resource type="CompositorEffect" id="CompositorEffect_e74ec"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -55,7 +55,7 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("4_chktd")
opacity = 0.5578947
opacity = 0.0
blendMode = 1
overlayTexture = SubResource("CompressedTexture2D_g6idi")
overlayTint = Color(1, 1, 1, 0.050980393)
@ -94,7 +94,7 @@ use_hdr = true
fill = 1
fill_from = Vector2(0.5, 0.50427353)
[sub_resource type="CompositorEffect" id="CompositorEffect_m7r8b"]
[sub_resource type="CompositorEffect" id="CompositorEffect_bfksq"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -102,7 +102,7 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("4_chktd")
opacity = 0.5578947
opacity = 0.0
blendMode = 1
overlayTexture = ExtResource("5_1gqhf")
overlayTint = Color(1, 1, 1, 0.21568628)
@ -128,7 +128,7 @@ curve = SubResource("Curve_nxurn")
script = ExtResource("3_eyvih")
owner = SubResource("Resource_1ntwo")
[sub_resource type="CompositorEffect" id="CompositorEffect_sw5v3"]
[sub_resource type="CompositorEffect" id="CompositorEffect_eyvih"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -136,7 +136,7 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("6_t8xaw")
distortionAmount = 0.12
distortionAmount = 0.0
ellipseScale = 1.138
ringsDistribution = 0.7727
animationTargets = [SubResource("Resource_35pef")]
@ -156,7 +156,7 @@ curve = SubResource("Curve_71075")
script = ExtResource("3_eyvih")
owner = SubResource("Resource_1ntwo")
[sub_resource type="CompositorEffect" id="CompositorEffect_wi6eu"]
[sub_resource type="CompositorEffect" id="CompositorEffect_chktd"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -164,7 +164,7 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("7_g2w8j")
amount = 1.0
amount = 0.0
num = 3
distortionAmount = 0.4369
distortionAngle = 168.8496
@ -198,7 +198,7 @@ curve = SubResource("Curve_su8gi")
script = ExtResource("3_eyvih")
owner = SubResource("Resource_1ntwo")
[sub_resource type="CompositorEffect" id="CompositorEffect_7720d"]
[sub_resource type="CompositorEffect" id="CompositorEffect_1gqhf"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -206,7 +206,7 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("8_bfeok")
amount = 1.0
amount = 0.0
saturationOffset = 30.0
saturationGamma = 37.9747
lightnessOffset = 2.0
@ -217,5 +217,5 @@ metadata/_custom_type_script = "uid://pevgspwywsxi"
[resource]
script = ExtResource("9_fgrt2")
effects = [SubResource("CompositorEffect_ixqtu"), SubResource("CompositorEffect_m7r8b"), SubResource("CompositorEffect_sw5v3"), SubResource("CompositorEffect_wi6eu"), SubResource("CompositorEffect_7720d")]
effects = [SubResource("CompositorEffect_e74ec"), SubResource("CompositorEffect_bfksq"), SubResource("CompositorEffect_eyvih"), SubResource("CompositorEffect_chktd"), SubResource("CompositorEffect_1gqhf")]
metadata/_custom_type_script = "uid://ckixweetchlo0"

View File

@ -61,7 +61,7 @@ noise = SubResource("FastNoiseLite_3tnad")
color_ramp = SubResource("Gradient_0c48d")
seamless = true
[sub_resource type="CompositorEffect" id="CompositorEffect_ysmsc"]
[sub_resource type="CompositorEffect" id="CompositorEffect_nnbdi"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -69,7 +69,7 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("4_qyiel")
amount = 0.1
amount = 0.0
blendMode = 0.0
inputFading = SubResource("GradientTexture2D_i46l2")
outputFading = SubResource("GradientTexture2D_d1ujc")
@ -82,7 +82,7 @@ smearingSteps = 10
smearing = 1.5
redShift = 0.1689
blueShift = -0.0889
lumaTint = Color(0.8206905, 0.5294989, 0.1740212, 1)
lumaTint = Color(2.3825946, 1.5737975, 0.5791954, 1)
lumaInputRange = Vector2(1.015, 1.5)
lumaOutputRange = Vector2(0, 1)
desaturation = 0.0
@ -143,7 +143,7 @@ colors = PackedColorArray(1, 1, 1, 1)
gradient = SubResource("Gradient_ie6m2")
width = 2
[sub_resource type="CompositorEffect" id="CompositorEffect_7axlu"]
[sub_resource type="CompositorEffect" id="CompositorEffect_c6fon"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -151,7 +151,7 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("6_cc1ov")
amount = 1.0
amount = 0.0
lumaTint = Color(0.26849365, 0.1881681, 0.06346091, 1)
blurRadius = 2
lumaInputRange = Vector2(1, 1.5)
@ -179,7 +179,7 @@ metadata/_custom_type_script = "uid://dvvfvlutisecy"
script = ExtResource("3_c6fon")
owner = SubResource("Resource_d1ujc")
[sub_resource type="CompositorEffect" id="CompositorEffect_frwbc"]
[sub_resource type="CompositorEffect" id="CompositorEffect_qyiel"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -187,9 +187,9 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("7_nnbdi")
amount = 1.0
amount = 0.0
num = 1
blendMode = 0.7151
blendMode = 0.51
distortionAmount = 0.3446
distortionAngle = 0.0
distortionAngleSpeed = 0.0
@ -198,7 +198,7 @@ redShift = 0.0415
blueShift = -0.0065
blurRadiusX = 5
blurRadiusY = 5
lumaTint = Color(1.340301, 0.78043133, 0, 1)
lumaTint = Color(4.2130003, 3.380445, 0.5407243, 1)
downSampling = 3
animationTargets = [SubResource("Resource_22k1k")]
compositorEffectID = SubResource("Resource_hpfyh")
@ -206,5 +206,5 @@ metadata/_custom_type_script = "uid://6jkixa201wux"
[resource]
script = ExtResource("7_txjlu")
effects = [SubResource("CompositorEffect_ysmsc"), SubResource("CompositorEffect_7axlu"), SubResource("CompositorEffect_frwbc")]
effects = [SubResource("CompositorEffect_nnbdi"), SubResource("CompositorEffect_c6fon"), SubResource("CompositorEffect_qyiel")]
metadata/_custom_type_script = "uid://ckixweetchlo0"

View File

@ -1,7 +1,8 @@
[gd_resource type="Resource" script_class="CompositorVFXPreset" load_steps=35 format=3 uid="uid://0blw3yhjw7y0"]
[gd_resource type="Resource" script_class="CompositorVFXPreset" load_steps=36 format=3 uid="uid://0blw3yhjw7y0"]
[ext_resource type="Script" uid="uid://cx5qcow1mmd11" path="res://addons/rokojori_action_library/Runtime/Rendering/Compositor/CompositorEffectReferences/CompositorEffectOwner.cs" id="1_0ail8"]
[ext_resource type="Script" uid="uid://dvvfvlutisecy" path="res://addons/rokojori_action_library/Runtime/Rendering/Compositor/AnimationTargets/CompFXMemberCurveTarget.cs" id="1_4xviq"]
[ext_resource type="Resource" uid="uid://bwhnq7w0tpgv" path="res://VFX/Action FX Compositor Effect Layer.tres" id="2_4xviq"]
[ext_resource type="Script" uid="uid://comuvej4dr22k" path="res://addons/rokojori_action_library/Runtime/Rendering/Compositor/CompositorEffectReferences/RokojoriCompositorEffectID.cs" id="2_tc21q"]
[ext_resource type="Script" uid="uid://bx4j8ic80vl7f" path="res://addons/rokojori_action_library/Runtime/Rendering/Compositor/CompositorEffects/Edge/DepthOutlines/DepthOutlinesEffect.cs" id="3_dryyw"]
[ext_resource type="Texture2D" uid="uid://c30nul6romace" path="res://addons/rokojori_action_library/Runtime/Procedural/Noise/RGB 3D Noise.png" id="5_orb2s"]
@ -25,6 +26,7 @@ script = ExtResource("1_0ail8")
[sub_resource type="Resource" id="Resource_p64cs"]
script = ExtResource("2_tc21q")
owner = SubResource("Resource_ie6m2")
layer = ExtResource("2_4xviq")
[sub_resource type="Curve" id="Curve_7axlu"]
_data = [Vector2(0, 1), 0.0, -18.573792, 0, 0, Vector2(0.07774799, 0.15679264), -0.687919, -0.687919, 0, 0, Vector2(1, 0), -0.069252, 0.0, 0, 0]
@ -48,7 +50,7 @@ point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_hpfyh"]
curve = SubResource("Curve_22k1k")
[sub_resource type="CompositorEffect" id="CompositorEffect_ie6m2"]
[sub_resource type="CompositorEffect" id="CompositorEffect_4xviq"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -56,6 +58,7 @@ effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("3_dryyw")
amount = 0.0
outlineWidth = -0.0516
outlineWidthCurve = SubResource("CurveTexture_p64cs")
edgeColor = Color(0.14817011, 0.21073082, 0.29634023, 1)
@ -89,6 +92,7 @@ metadata/_custom_type_script = "uid://dvvfvlutisecy"
[sub_resource type="Resource" id="Resource_hpfyh"]
script = ExtResource("2_tc21q")
owner = SubResource("Resource_ie6m2")
layer = ExtResource("2_4xviq")
[sub_resource type="Gradient" id="Gradient_frwbc"]
offsets = PackedFloat32Array(1)
@ -97,7 +101,7 @@ colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_w6tyf"]
gradient = SubResource("Gradient_frwbc")
[sub_resource type="CompositorEffect" id="CompositorEffect_i5utj"]
[sub_resource type="CompositorEffect" id="CompositorEffect_0m0g3"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -106,6 +110,7 @@ needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("6_hdnet")
distortionAmount = 0.0049
blendAmount = 0.0
smearingSteps = 1
smearing = 1.0
redShift = 0.0
@ -132,6 +137,7 @@ metadata/_custom_type_script = "uid://dvvfvlutisecy"
[sub_resource type="Resource" id="Resource_gxlxg"]
script = ExtResource("2_tc21q")
owner = SubResource("Resource_ie6m2")
layer = ExtResource("2_4xviq")
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_4n83u"]
load_path = "res://.godot/imported/RGB 3D Noise.png-daebfe00d2f3fcd5d3bc528f8a3972e1.ctex"
@ -143,7 +149,7 @@ colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_ixn1d"]
gradient = SubResource("Gradient_72jau")
[sub_resource type="CompositorEffect" id="CompositorEffect_22k1k"]
[sub_resource type="CompositorEffect" id="CompositorEffect_orb2s"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -152,6 +158,7 @@ needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("6_hdnet")
distortionAmount = 0.0026
blendAmount = 0.0
smearingSteps = 1
smearing = 1.0
redShift = 0.0
@ -168,8 +175,9 @@ metadata/_custom_type_script = "uid://balixgskgouhm"
[sub_resource type="Resource" id="Resource_3tnad"]
script = ExtResource("2_tc21q")
owner = SubResource("Resource_ie6m2")
layer = ExtResource("2_4xviq")
[sub_resource type="CompositorEffect" id="CompositorEffect_y3g14"]
[sub_resource type="CompositorEffect" id="CompositorEffect_hdnet"]
resource_local_to_scene = false
resource_name = ""
enabled = true
@ -184,5 +192,5 @@ metadata/_custom_type_script = "uid://cjfxcl3cdhnku"
[resource]
script = ExtResource("6_orb2s")
effects = [SubResource("CompositorEffect_ie6m2"), SubResource("CompositorEffect_i5utj"), SubResource("CompositorEffect_22k1k"), SubResource("CompositorEffect_y3g14")]
effects = [SubResource("CompositorEffect_4xviq"), SubResource("CompositorEffect_0m0g3"), SubResource("CompositorEffect_orb2s"), SubResource("CompositorEffect_hdnet")]
metadata/_custom_type_script = "uid://ckixweetchlo0"

View File

@ -223,10 +223,7 @@ vec4 colorSpaceConversion( vec4 color, int mode )
return mode == 1 ? LINEARtoSRGB( color ) : SRGBtoLINEAR( color );
}
float modPolarDegrees( float value )
{
return mod( value + 180.0, 360.0 ) - 180.0;
}
vec3 changeHueOfRGB( vec3 rgb, float hueChange )
@ -237,6 +234,11 @@ vec3 changeHueOfRGB( vec3 rgb, float hueChange )
return HSLtoRGB( hsl );
}
float modPolarDegrees( float value )
{
return mod( value + 180.0, 360.0 ) - 180.0;
}
float hue360ToYB( float hue )
{
return modPolarDegrees( hue - 240.0 );

View File

@ -80,6 +80,7 @@ vec2 seamLessCoordinate( vec2 uv, vec2 seamRange, vec2 seamFade, vec2 type )
return mod( uv - seamFade * type, seamRange );
}
float perlinOctavesSeamless( vec2 uv, int octaves, float scale, float gain, vec2 seamRange, vec2 seamFade )
{
// uv = mod( uv , seamRange );
@ -109,6 +110,39 @@ float perlinOctavesSeamless( vec2 uv, int octaves, float scale, float gain, vec2
}
vec2 seamlessModulo( vec2 divident, vec2 divisor )
{
vec2 positiveDivident = mod( divident, divisor ) + divisor;
return mod( positiveDivident, divisor );
}
float perlinSeamlessWithRange( vec2 uv, vec2 repeat )
{
uv *= repeat;
vec2 i = floor( uv );
vec2 f = fract( uv );
vec2 fade = f;
vec2 i00 = mod( i + vec2( 0.0, 0.0 ), repeat );
vec2 i10 = mod( i + vec2( 1.0, 0.0 ), repeat );
vec2 i01 = mod( i + vec2( 0.0, 1.0 ), repeat );
vec2 i11 = mod( i + vec2( 1.0, 1.0 ), repeat );
float a = random( i00 );
float b = random( i10 );
float c = random( i01 );
float d = random( i11 );
return mix(
mix(a, b, fade.x),
mix(c, d, fade.x),
fade.y
);
}
float perlin3D( vec3 uvw )
{

View File

@ -0,0 +1,100 @@
// COLOR
group_uniforms Color;
uniform vec4 color : source_color = vec4( 0.887, 0.434, 0.233, 1.0 );
uniform float opacity = 1;
uniform sampler2D opacityCurve:source_color;
uniform float minHueRandom = 0;
uniform float maxHueRandom = 0;
uniform float shapeNoiseAmount:hint_range(0,1) = 0;
uniform float shapeNoiseScale = 1.0;
group_uniforms;
// SIZE
group_uniforms Size;
uniform float sizeX:hint_range(1,100) = 1;
uniform float sizeY:hint_range(1,100) = 1;
uniform float worldSizeScale = 1;
uniform float screenSizeScale = 1;
uniform float worldSize_vs_screenSize:hint_range(0,1) = 0.5;
uniform float randomScaleMin = 1.0;
uniform float randomScaleMax = 1.0;
uniform float extension = 1.0;
group_uniforms;
// ROTATION
group_uniforms Rotation;
uniform float rotation:hint_range(-360,360) = 0.0;
uniform float rotationOverX:hint_range(-360,360) = 0.0;
uniform float rotationOverY:hint_range(-360,360) = 0.0;
uniform float rotationPerLayer:hint_range(-360,360) = 0.0;
// uniform float vertexRotation:hint_range(-360,360) = 0.0;
// uniform float vertexRotationOverX:hint_range(-360,360) = 0.0;
// uniform float vertexRotationOverY:hint_range(-360,360) = 0.0;
// uniform float vertexRotationPerLayer:hint_range(-360,360) = 0.0;
group_uniforms;
// SCREEN OFFSET
group_uniforms ScreenOffset;
uniform vec2 screenOffset = vec2( 0, 0 );
uniform vec2 screenOffsetScale = vec2( 0, 0 );
uniform vec2 screenOffsetLayerSpread = vec2( 0, 0 );
group_uniforms;
// CHROMATIC ABERATION
group_uniforms ChromaticAberation;
uniform int chromaticAberationMode = 0;
uniform float chromaticAberationAmount:hint_range(0,100) = 0;
uniform int chromaticAberationSteps:hint_range(0,32) = 1;
uniform vec2 chromaticAberationDirection = vec2( 1.0, 1.0 );
uniform float chromaticAberationDirectionTowardsCenter:hint_range(-1,1) = 1.0;
uniform float chromaticAberationCenterScale:hint_range(0,1000) = 1.0;
uniform float chromaticAberationCenterOffset:hint_range(-1,1) = 1.0;
uniform vec3 chromaticAberationShifts = vec3( 0.95, 1.0, 1.05 );
uniform float chromaticAberationSmear = 1;
group_uniforms;
// FADING
group_uniforms Fading;
uniform int fadingMode = 0;
uniform sampler2D fading:source_color, repeat_disable, filter_linear;
uniform sampler2D opacityFading:source_color, repeat_disable, filter_linear;
uniform sampler2D sizeXfading:source_color, repeat_disable, filter_linear;
uniform sampler2D sizeYfading:source_color, repeat_disable, filter_linear;
uniform float fadingPower = 1.0;
uniform float opacityFadingPower = 1.0;
uniform float sizeXfadingPower = 1.0;
uniform float sizeYfadingPower = 1.0;
varying float opacityFadeValue;
group_uniforms;
// OCCLUSION
group_uniforms Occlusion;
uniform int occlusionMode = 0;
uniform sampler2D depthTexture:hint_depth_texture;
uniform float occlusionZOffset:hint_range(-30,30) = 0;
uniform int occlusionTestMaxSteps = 10;
uniform float occlusionTestStepStride = 1;
uniform float occlusionTest_ViewDependingScaleAmount:hint_range(0,1) = 0.5;
uniform float occlusionTest_ViewDependingDistance = 100;
uniform float occlusionToSize = 0.5;
varying float occlusionAlpha;
group_uniforms;
varying vec4 combinedColor;
varying vec2 centerDirection;
varying float zIndex;
// varying float nodeRotationOffset;

View File

@ -0,0 +1 @@
uid://dijr3jilsh8ue

View File

@ -0,0 +1,250 @@
void vertex()
{
float normalizedIndex = VERTEX.z;
VERTEX.z = 0.0;
zIndex = normalizedIndex;
vec3 viewOffset = viewToWorldDirection( vec3( 0, 0, occlusionZOffset ), INV_VIEW_MATRIX );
vec3 nodePositionView = worldToView( NODE_POSITION_WORLD + viewOffset, VIEW_MATRIX );
vec2 screenPosition = viewToScreen( nodePositionView, PROJECTION_MATRIX );
float fadeValue = 1.0;
float opacityValue = 1.0;
float sizeXFade = 1.0;
float sizeYFade = 1.0;
if ( fadingMode == 1 )
{
float edgeDistance = max( 0.0, -sdBox( screenPosition - vec2( 0.5 ), vec2( 0.5 ) ) ) * 2.0;
fadeValue = pow( edgeDistance, fadingPower );
opacityValue = pow( edgeDistance, opacityFadingPower );
sizeXFade = pow( edgeDistance, sizeXfadingPower );
sizeYFade = pow( edgeDistance, sizeYfadingPower );
}
else if ( fadingMode == 2 )
{
fadeValue = textureLod( fading, screenPosition, 0.0 ).r;
opacityValue = textureLod( opacityFading, screenPosition, 0.0 ).r;
sizeXFade = textureLod( sizeXfading, screenPosition, 0.0 ).r;
sizeYFade = textureLod( sizeYfading, screenPosition, 0.0 ).r;
}
float nodeScale = length( extractScale( MODEL_MATRIX ) );
float sX = sizeX * sizeXFade;
float sY = sizeY * sizeYFade;
vec2 uvPixelSize = vec2( 1.0, 1.0 ) / VIEWPORT_SIZE ;
vec2 scaledUVPixelSize = uvPixelSize * max( 1.0, nodePositionView.z / occlusionTest_ViewDependingDistance );
uvPixelSize = mix( uvPixelSize, scaledUVPixelSize, occlusionTest_ViewDependingScaleAmount );
float occlusionValue = occlusionMode == 0 ? 1.0 : occlusionMode == 1 ?
getQuickOcclusionAt( depthTexture, nodePositionView, uvPixelSize,
occlusionTestMaxSteps, occlusionTestStepStride,
PROJECTION_MATRIX, INV_PROJECTION_MATRIX ) :
getOcclusionAt( depthTexture, nodePositionView, uvPixelSize,
occlusionTestMaxSteps, occlusionTestStepStride,
PROJECTION_MATRIX, INV_PROJECTION_MATRIX );
occlusionAlpha = occlusionValue * fadeValue;
float camDist = length( NODE_POSITION_WORLD - CAMERA_POSITION_WORLD );
float occlusionSizeFactor = mix( 1.0, occlusionAlpha, occlusionToSize );
vec2 sizeScaled = vec2( sX, sY ) * occlusionSizeFactor * nodeScale;
vec2 size = mix( sizeScaled * worldSizeScale, sizeScaled * camDist * 0.1 * screenSizeScale, worldSize_vs_screenSize );
float randomScale = mix( randomScaleMin, randomScaleMax, random( vec2( normalizedIndex ) ) );
size *= randomScale;
size *= extension;
setFlareOffsetMatrix(
MODELVIEW_MATRIX, VIEW_MATRIX, MAIN_CAM_INV_VIEW_MATRIX, MODEL_MATRIX,
screenOffsetScale + screenOffsetLayerSpread * ( normalizedIndex * 2.0 - 1.0 ),
screenOffset
);
vec2 offsetScreenPosition = localToScreen( vec3( 0.0 ), MODELVIEW_MATRIX, PROJECTION_MATRIX );
float combinedRotation = rotation;
combinedRotation += rotationPerLayer * ( normalizedIndex * 2.0 - 1.0 );
combinedRotation += ( offsetScreenPosition.x * 2.0 - 1.0 ) * rotationOverX;
float combinedRotationRadians = combinedRotation / 180.0 * PI;
setFlareScaleRotation(
MODELVIEW_MATRIX, MODELVIEW_NORMAL_MATRIX, MODEL_MATRIX,
vec3( size.x, size.y, 1.0 ), combinedRotationRadians
);
// nodeRotationOffset = ( offsetScreenPosition.x * 2.0 - 1.0 ) * rotationOverX;
// nodeRotationOffset += rotationPerLayer * ( normalizedIndex * 2.0 - 1.0 ) ;
centerDirection = ( offsetScreenPosition - screenPosition );
centerDirection.y *= -1.0;
centerDirection = -centerDirection;
centerDirection = rotate_v2( centerDirection, -combinedRotationRadians );
combinedColor = color;
float rgbScale = getRGBScale( combinedColor.rgb );
float randomHueOffset = mix( minHueRandom, maxHueRandom, random( vec2( normalizedIndex ) + vec2( 0.23, 0.13 ) ) );
combinedColor.rgb = changeHueOfRGB( combinedColor.rgb / rgbScale, randomHueOffset ) * rgbScale;
GENERATE_FLARE_VERTEX_DATA
opacityFadeValue = fadeValue * opacityValue;
float opacityMapValue = textureLod( opacityCurve, vec2( normalizedIndex, 0.0 ), 0.0 ).r;
opacityFadeValue *= opacityMapValue * occlusionAlpha * opacity;
UV = ( UV - vec2( 0.5 ) ) * extension + vec2( 0.5 );
// UV = rotateAround_v2( UV, ( nodeRotationOffset + rotation ) / 180.0 * 3.141592653, vec2(0.5) );
}
float mirrorValue( float x )
{
float t = mod( x, 2.0 );
return ( t <= 1.0 ) ? t : 2.0 - t;
}
vec2 mirrorUV( vec2 uv )
{
return vec2( mirrorValue( uv.x ), mirrorValue( uv.y ) );
}
vec2 handleOverflow( vec2 uv )
{
return clamp( uv, vec2( 0.0 ), vec2( 1.0 ) );
// return mirrorUV( uv );
}
vec4 sampleChromatic( vec2 uv, vec2 dir, int steps, vec3 shifts, float smear )
{
vec4 combinedChromatic = vec4( 0.0 );
float weights = 0.0;
for ( int i = -steps; i <= steps; i++ )
{
float t = float( i ) / float( steps );
float w = 1.0 - abs( t );
vec2 stepDir = dir * pow( smear, t );
vec2 rUV = uv + stepDir * shifts.r;
rUV = handleOverflow( rUV );
vec2 gUV = uv + stepDir * shifts.g;
gUV = handleOverflow( gUV );
vec2 bUV = uv + stepDir * shifts.b;
bUV = handleOverflow( bUV );
vec4 colorR = generateFlare( rUV, color, opacityFadeValue );
vec4 colorG = generateFlare( gUV, color, opacityFadeValue );
vec4 colorB = generateFlare( bUV, color, opacityFadeValue );
combinedChromatic.r += colorR.r * w;
combinedChromatic.g += colorG.g * w;
combinedChromatic.b += colorB.b * w;
combinedChromatic.a += colorG.a * w;
weights += w;
}
combinedChromatic /= weights;
return combinedChromatic;
}
void fragment()
{
vec4 flareColor = vec4( 0.0 );
float centerLength = length( centerDirection );
float caAmount = chromaticAberationAmount;
if ( abs( chromaticAberationDirectionTowardsCenter ) > 0.0 )
{
float maxLength = clamp( centerLength * 100.0, 0.0, 1.0 );
caAmount = maxLength * chromaticAberationAmount;
}
vec2 uv = UV;
float rx = clamp( perlin( ( vec2( zIndex * 12.03 ) + UV ) * shapeNoiseScale ), 0.0, 1.0 );
float noiseOpacity = mix( 1.0, rx, shapeNoiseAmount );
if ( chromaticAberationMode != 0 && caAmount > 0.0 && chromaticAberationSteps > 0 )
{
vec2 alignedDir = chromaticAberationDirection;
if ( length( alignedDir ) > 1.0 )
{
alignedDir = normalize( chromaticAberationDirection );
}
vec2 normDir = alignedDir;
if ( centerLength > 0.0 && chromaticAberationDirectionTowardsCenter != 0.0 )
{
float amount = chromaticAberationDirectionTowardsCenter;
vec2 normalizedCenterDirection = normalize( centerDirection );
vec2 centerDir = normalizedCenterDirection;
if ( amount < 0.0 )
{
amount = -amount;
centerDir = -centerDir;
}
alignedDir = mix( normDir, centerDir, amount );
alignedDir = normalize( alignedDir ) / vec2( 100.0 );
}
float centerScale = 1.0;
float centerTreshold = 0.1;
if ( centerLength < centerTreshold )
{
centerScale = centerLength / centerTreshold;
}
// flareColor.rgb = vec3( centerLength, centerScale, 1.0 );
// flareColor.a = 1.0;
flareColor = sampleChromatic( uv, alignedDir * caAmount * centerScale, chromaticAberationSteps, chromaticAberationShifts, chromaticAberationSmear );
}
else
{
flareColor = generateFlare( uv, color, opacityFadeValue );
}
ALBEDO = flareColor.rgb;
ALPHA = flareColor.a * noiseOpacity;
}

View File

@ -0,0 +1 @@
uid://7j2y6whs3pq7

View File

@ -0,0 +1,175 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class BaseFlareShader
{
/*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"C:/rokojori/godot-projects/winter-tales/addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/BaseFlare/BaseFlare.gdshader"
);
*/
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class BaseFlareMaterial:CustomMaterial
{
public readonly CustomMaterialProperty<Color> color;
public readonly CustomMaterialProperty<float> opacity;
public readonly CustomMaterialProperty<Texture2D> opacityCurve;
public readonly CustomMaterialProperty<float> minHueRandom;
public readonly CustomMaterialProperty<float> maxHueRandom;
public readonly CustomMaterialProperty<float> shapeNoiseAmount;
public readonly CustomMaterialProperty<float> shapeNoiseScale;
public readonly CustomMaterialProperty<float> sizeX;
public readonly CustomMaterialProperty<float> sizeY;
public readonly CustomMaterialProperty<float> worldSizeScale;
public readonly CustomMaterialProperty<float> screenSizeScale;
public readonly CustomMaterialProperty<float> worldSizeVsScreenSize;
public readonly CustomMaterialProperty<float> randomScaleMin;
public readonly CustomMaterialProperty<float> randomScaleMax;
public readonly CustomMaterialProperty<float> extension;
public readonly CustomMaterialProperty<float> rotation;
public readonly CustomMaterialProperty<float> rotationOverX;
public readonly CustomMaterialProperty<float> rotationOverY;
public readonly CustomMaterialProperty<float> rotationPerLayer;
public readonly CustomMaterialProperty<Vector2> screenOffset;
public readonly CustomMaterialProperty<Vector2> screenOffsetScale;
public readonly CustomMaterialProperty<Vector2> screenOffsetLayerSpread;
public readonly CustomMaterialProperty<int> chromaticAberationMode;
public readonly CustomMaterialProperty<float> chromaticAberationAmount;
public readonly CustomMaterialProperty<int> chromaticAberationSteps;
public readonly CustomMaterialProperty<Vector2> chromaticAberationDirection;
public readonly CustomMaterialProperty<float> chromaticAberationDirectionTowardsCenter;
public readonly CustomMaterialProperty<float> chromaticAberationCenterScale;
public readonly CustomMaterialProperty<float> chromaticAberationCenterOffset;
public readonly CustomMaterialProperty<Vector3> chromaticAberationShifts;
public readonly CustomMaterialProperty<float> chromaticAberationSmear;
public readonly CustomMaterialProperty<int> fadingMode;
public readonly CustomMaterialProperty<Texture2D> fading;
public readonly CustomMaterialProperty<Texture2D> opacityFading;
public readonly CustomMaterialProperty<Texture2D> sizeXfading;
public readonly CustomMaterialProperty<Texture2D> sizeYfading;
public readonly CustomMaterialProperty<float> fadingPower;
public readonly CustomMaterialProperty<float> opacityFadingPower;
public readonly CustomMaterialProperty<float> sizeXfadingPower;
public readonly CustomMaterialProperty<float> sizeYfadingPower;
public readonly CustomMaterialProperty<int> occlusionMode;
public readonly CustomMaterialProperty<float> occlusionZOffset;
public readonly CustomMaterialProperty<int> occlusionTestMaxSteps;
public readonly CustomMaterialProperty<float> occlusionTestStepStride;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingScaleAmount;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingDistance;
public readonly CustomMaterialProperty<float> occlusionToSize;
public BaseFlareMaterial()
{
/*
Shader = BaseFlareShader.shader.Get();
*/
color = new CustomMaterialProperty<Color>( this, BaseFlareShader.color );
opacity = new CustomMaterialProperty<float>( this, BaseFlareShader.opacity );
opacityCurve = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.opacityCurve );
minHueRandom = new CustomMaterialProperty<float>( this, BaseFlareShader.minHueRandom );
maxHueRandom = new CustomMaterialProperty<float>( this, BaseFlareShader.maxHueRandom );
shapeNoiseAmount = new CustomMaterialProperty<float>( this, BaseFlareShader.shapeNoiseAmount );
shapeNoiseScale = new CustomMaterialProperty<float>( this, BaseFlareShader.shapeNoiseScale );
sizeX = new CustomMaterialProperty<float>( this, BaseFlareShader.sizeX );
sizeY = new CustomMaterialProperty<float>( this, BaseFlareShader.sizeY );
worldSizeScale = new CustomMaterialProperty<float>( this, BaseFlareShader.worldSizeScale );
screenSizeScale = new CustomMaterialProperty<float>( this, BaseFlareShader.screenSizeScale );
worldSizeVsScreenSize = new CustomMaterialProperty<float>( this, BaseFlareShader.worldSizeVsScreenSize );
randomScaleMin = new CustomMaterialProperty<float>( this, BaseFlareShader.randomScaleMin );
randomScaleMax = new CustomMaterialProperty<float>( this, BaseFlareShader.randomScaleMax );
extension = new CustomMaterialProperty<float>( this, BaseFlareShader.extension );
rotation = new CustomMaterialProperty<float>( this, BaseFlareShader.rotation );
rotationOverX = new CustomMaterialProperty<float>( this, BaseFlareShader.rotationOverX );
rotationOverY = new CustomMaterialProperty<float>( this, BaseFlareShader.rotationOverY );
rotationPerLayer = new CustomMaterialProperty<float>( this, BaseFlareShader.rotationPerLayer );
screenOffset = new CustomMaterialProperty<Vector2>( this, BaseFlareShader.screenOffset );
screenOffsetScale = new CustomMaterialProperty<Vector2>( this, BaseFlareShader.screenOffsetScale );
screenOffsetLayerSpread = new CustomMaterialProperty<Vector2>( this, BaseFlareShader.screenOffsetLayerSpread );
chromaticAberationMode = new CustomMaterialProperty<int>( this, BaseFlareShader.chromaticAberationMode );
chromaticAberationAmount = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationAmount );
chromaticAberationSteps = new CustomMaterialProperty<int>( this, BaseFlareShader.chromaticAberationSteps );
chromaticAberationDirection = new CustomMaterialProperty<Vector2>( this, BaseFlareShader.chromaticAberationDirection );
chromaticAberationDirectionTowardsCenter = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationDirectionTowardsCenter );
chromaticAberationCenterScale = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationCenterScale );
chromaticAberationCenterOffset = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationCenterOffset );
chromaticAberationShifts = new CustomMaterialProperty<Vector3>( this, BaseFlareShader.chromaticAberationShifts );
chromaticAberationSmear = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationSmear );
fadingMode = new CustomMaterialProperty<int>( this, BaseFlareShader.fadingMode );
fading = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.fading );
opacityFading = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.opacityFading );
sizeXfading = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.sizeXfading );
sizeYfading = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.sizeYfading );
fadingPower = new CustomMaterialProperty<float>( this, BaseFlareShader.fadingPower );
opacityFadingPower = new CustomMaterialProperty<float>( this, BaseFlareShader.opacityFadingPower );
sizeXfadingPower = new CustomMaterialProperty<float>( this, BaseFlareShader.sizeXfadingPower );
sizeYfadingPower = new CustomMaterialProperty<float>( this, BaseFlareShader.sizeYfadingPower );
occlusionMode = new CustomMaterialProperty<int>( this, BaseFlareShader.occlusionMode );
occlusionZOffset = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionZOffset );
occlusionTestMaxSteps = new CustomMaterialProperty<int>( this, BaseFlareShader.occlusionTestMaxSteps );
occlusionTestStepStride = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionTestStepStride );
occlusionTestViewDependingScaleAmount = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionTestViewDependingScaleAmount );
occlusionTestViewDependingDistance = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionTestViewDependingDistance );
occlusionToSize = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionToSize );
}
}
}

View File

@ -0,0 +1 @@
uid://dg6f7yio6bhmg

View File

@ -0,0 +1,119 @@
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/Flares.gdshaderinc"
// SHAPE
group_uniforms Shape;
uniform float shapeScale = 1.0;
uniform sampler2D radialFill:source_color, filter_linear, repeat_enable;
uniform float radialFillStrength = 1.0;
uniform float radialFillTile = 1.0;
uniform float radialFillOffset = 0.0;
uniform bool radialFillRepeat = false;
uniform sampler2D conicFill:source_color, filter_linear, repeat_enable;
uniform float conicFillStrength = 1.0;
uniform float conicFillTile = 1.0;
uniform float conicFillOffset = 0.0;
uniform bool conicFillRepeat = false;
uniform float fillMultiply = 0.0;
uniform float fillAdd = 0.0;
uniform float shapeColorize:hint_range(0,1) = 0.0;
uniform sampler2D radialMask:filter_linear, repeat_enable;
uniform float radialMaskStrength = 1.0;
uniform float radialMaskTile = 1.0;
uniform float radialMaskOffset = 0.0;
uniform bool radialMaskRepeat = false;
uniform sampler2D conicMask: filter_linear, repeat_enable;
uniform float conicMaskStrength = 1.0;
uniform float conicMaskTile = 1.0;
uniform float conicMaskOffset = 1.0;
uniform bool conicMaskRepeat = false;
uniform float maskMultiply = 0.0;
uniform float maskAdd = 0.0;
group_uniforms;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/BaseFlare/BaseFlare-Variables.gdshaderinc"
#define GENERATE_FLARE_VERTEX_DATA \
{ \
\
\
} \
vec3 colorize( vec3 _original, vec3 _color )
{
float _grey = ( _original.r + _original.g + _original.b ) / 3.0;
return _grey < 0.5 ? mix( vec3( 0.0 ), _color, _grey * 2.0 ) :
mix( _color, vec3( 1.0 ), ( _grey - 0.5 ) * 2.0 );
}
vec4 blendColor( vec4 _computedColor, vec4 _tintColor, float _colorize )
{
vec4 _mixed = _computedColor * _tintColor;
vec4 _colorized = vec4( colorize( _tintColor.rgb, _computedColor.rgb ), _computedColor.a * _tintColor.a );
return mix( _mixed, _colorized, _colorize );
}
vec2 polarUV( vec2 _uv, float angleOffset )
{
vec2 toCenter = _uv - vec2( 0.5 );
float d = length( toCenter );
float a = atan( toCenter.y, toCenter.x );
a = ( PI + a + angleOffset + PI * 2.0 * 0.75 ) / ( 2.0 * PI );
vec2 polarUV = vec2( d / 0.5, mod( a, 1.0 ) );
return polarUV;
}
vec4 sample( float x, sampler2D sampler, float strength, float tile, float offset, bool repeat )
{
x = x * tile + offset;
if ( ! repeat )
{
x = clamp( x, 0.0, 1.0 );
}
return textureLod( sampler, vec2( x, 0.0 ), 0 ) * strength;
}
vec4 generateFlare( vec2 _uv, vec4 _color, float _opacity )
{
_uv = ( _uv - vec2( 0.5 ) ) * shapeScale + vec2( 0.5 );
_uv = polarUV( _uv, 0.0 );
vec4 _radialFill = sample( _uv.x, radialFill, radialFillStrength, radialFillTile, radialFillOffset, radialFillRepeat );
vec4 _conicFill = sample( _uv.y, conicFill, conicFillStrength, conicFillTile, conicFillOffset, conicFillRepeat );
float _radialMask = sample( _uv.x, radialMask, radialMaskStrength, radialMaskTile, radialMaskOffset, radialMaskRepeat ).r;
float _conicMask = sample( _uv.y, conicMask, conicMaskStrength, conicMaskTile, conicMaskOffset, conicMaskRepeat ).r;
vec4 fill = _radialFill * _conicFill * fillMultiply + fillAdd * ( _radialFill + _conicFill );
float mask = _radialMask * _conicMask * maskMultiply + maskAdd * ( _radialMask + _conicMask );
vec4 mixedColor = fill;
mixedColor.a *= mask;
mixedColor = blendColor( mixedColor, _color, shapeColorize );
// mixedColor *= _color;
mixedColor.a *= _opacity;
// mixedColor = vec4( 1.0, 1.0, 1.0, _uv.x );
return mixedColor;
}
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/BaseFlare/BaseFlare-VertexFragment.gdshaderinc"

View File

@ -0,0 +1 @@
uid://bj1s1dgcv5ouu

View File

@ -0,0 +1,4 @@
shader_type spatial;
render_mode blend_add, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseType/EllipseTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://bbb3acmgbp5p0

View File

@ -0,0 +1,159 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class EllipseTypeFlareAddShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseType/Variants/EllipseTypeFlareAdd.gdshader"
);
//*/
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly Sampler2DPropertyName radialFill = Sampler2DPropertyName.Create( "radialFill" );
public static readonly FloatPropertyName radialFillStrength = FloatPropertyName.Create( "radialFillStrength" );
public static readonly FloatPropertyName radialFillTile = FloatPropertyName.Create( "radialFillTile" );
public static readonly FloatPropertyName radialFillOffset = FloatPropertyName.Create( "radialFillOffset" );
public static readonly BoolPropertyName radialFillRepeat = BoolPropertyName.Create( "radialFillRepeat" );
public static readonly Sampler2DPropertyName conicFill = Sampler2DPropertyName.Create( "conicFill" );
public static readonly FloatPropertyName conicFillStrength = FloatPropertyName.Create( "conicFillStrength" );
public static readonly FloatPropertyName conicFillTile = FloatPropertyName.Create( "conicFillTile" );
public static readonly FloatPropertyName conicFillOffset = FloatPropertyName.Create( "conicFillOffset" );
public static readonly BoolPropertyName conicFillRepeat = BoolPropertyName.Create( "conicFillRepeat" );
public static readonly FloatPropertyName fillMultiply = FloatPropertyName.Create( "fillMultiply" );
public static readonly FloatPropertyName fillAdd = FloatPropertyName.Create( "fillAdd" );
public static readonly FloatPropertyName shapeColorize = FloatPropertyName.Create( "shapeColorize" );
public static readonly Sampler2DPropertyName radialMask = Sampler2DPropertyName.Create( "radialMask" );
public static readonly FloatPropertyName radialMaskStrength = FloatPropertyName.Create( "radialMaskStrength" );
public static readonly FloatPropertyName radialMaskTile = FloatPropertyName.Create( "radialMaskTile" );
public static readonly FloatPropertyName radialMaskOffset = FloatPropertyName.Create( "radialMaskOffset" );
public static readonly BoolPropertyName radialMaskRepeat = BoolPropertyName.Create( "radialMaskRepeat" );
public static readonly Sampler2DPropertyName conicMask = Sampler2DPropertyName.Create( "conicMask" );
public static readonly FloatPropertyName conicMaskStrength = FloatPropertyName.Create( "conicMaskStrength" );
public static readonly FloatPropertyName conicMaskTile = FloatPropertyName.Create( "conicMaskTile" );
public static readonly FloatPropertyName conicMaskOffset = FloatPropertyName.Create( "conicMaskOffset" );
public static readonly BoolPropertyName conicMaskRepeat = BoolPropertyName.Create( "conicMaskRepeat" );
public static readonly FloatPropertyName maskMultiply = FloatPropertyName.Create( "maskMultiply" );
public static readonly FloatPropertyName maskAdd = FloatPropertyName.Create( "maskAdd" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class EllipseTypeFlareAddMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<Texture2D> radialFill;
public readonly CustomMaterialProperty<float> radialFillStrength;
public readonly CustomMaterialProperty<float> radialFillTile;
public readonly CustomMaterialProperty<float> radialFillOffset;
public readonly CustomMaterialProperty<bool> radialFillRepeat;
public readonly CustomMaterialProperty<Texture2D> conicFill;
public readonly CustomMaterialProperty<float> conicFillStrength;
public readonly CustomMaterialProperty<float> conicFillTile;
public readonly CustomMaterialProperty<float> conicFillOffset;
public readonly CustomMaterialProperty<bool> conicFillRepeat;
public readonly CustomMaterialProperty<float> fillMultiply;
public readonly CustomMaterialProperty<float> fillAdd;
public readonly CustomMaterialProperty<float> shapeColorize;
public readonly CustomMaterialProperty<Texture2D> radialMask;
public readonly CustomMaterialProperty<float> radialMaskStrength;
public readonly CustomMaterialProperty<float> radialMaskTile;
public readonly CustomMaterialProperty<float> radialMaskOffset;
public readonly CustomMaterialProperty<bool> radialMaskRepeat;
public readonly CustomMaterialProperty<Texture2D> conicMask;
public readonly CustomMaterialProperty<float> conicMaskStrength;
public readonly CustomMaterialProperty<float> conicMaskTile;
public readonly CustomMaterialProperty<float> conicMaskOffset;
public readonly CustomMaterialProperty<bool> conicMaskRepeat;
public readonly CustomMaterialProperty<float> maskMultiply;
public readonly CustomMaterialProperty<float> maskAdd;
public EllipseTypeFlareAddMaterial()
{
///*
Shader = EllipseTypeFlareAddShader.shader.Get();
//*/
shapeScale = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.shapeScale );
radialFill = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareAddShader.radialFill );
radialFillStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.radialFillStrength );
radialFillTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.radialFillTile );
radialFillOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.radialFillOffset );
radialFillRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareAddShader.radialFillRepeat );
conicFill = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareAddShader.conicFill );
conicFillStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.conicFillStrength );
conicFillTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.conicFillTile );
conicFillOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.conicFillOffset );
conicFillRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareAddShader.conicFillRepeat );
fillMultiply = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.fillMultiply );
fillAdd = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.fillAdd );
shapeColorize = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.shapeColorize );
radialMask = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareAddShader.radialMask );
radialMaskStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.radialMaskStrength );
radialMaskTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.radialMaskTile );
radialMaskOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.radialMaskOffset );
radialMaskRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareAddShader.radialMaskRepeat );
conicMask = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareAddShader.conicMask );
conicMaskStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.conicMaskStrength );
conicMaskTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.conicMaskTile );
conicMaskOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.conicMaskOffset );
conicMaskRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareAddShader.conicMaskRepeat );
maskMultiply = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.maskMultiply );
maskAdd = new CustomMaterialProperty<float>( this, EllipseTypeFlareAddShader.maskAdd );
}
}
}

View File

@ -0,0 +1 @@
uid://cc3jq0uc5ukxw

View File

@ -0,0 +1,4 @@
shader_type spatial;
render_mode blend_mix, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseType/EllipseTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://dhxsdn5ken8ed

View File

@ -0,0 +1,159 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class EllipseTypeFlareMixShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseType/Variants/EllipseTypeFlareMix.gdshader"
);
//*/
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly Sampler2DPropertyName radialFill = Sampler2DPropertyName.Create( "radialFill" );
public static readonly FloatPropertyName radialFillStrength = FloatPropertyName.Create( "radialFillStrength" );
public static readonly FloatPropertyName radialFillTile = FloatPropertyName.Create( "radialFillTile" );
public static readonly FloatPropertyName radialFillOffset = FloatPropertyName.Create( "radialFillOffset" );
public static readonly BoolPropertyName radialFillRepeat = BoolPropertyName.Create( "radialFillRepeat" );
public static readonly Sampler2DPropertyName conicFill = Sampler2DPropertyName.Create( "conicFill" );
public static readonly FloatPropertyName conicFillStrength = FloatPropertyName.Create( "conicFillStrength" );
public static readonly FloatPropertyName conicFillTile = FloatPropertyName.Create( "conicFillTile" );
public static readonly FloatPropertyName conicFillOffset = FloatPropertyName.Create( "conicFillOffset" );
public static readonly BoolPropertyName conicFillRepeat = BoolPropertyName.Create( "conicFillRepeat" );
public static readonly FloatPropertyName fillMultiply = FloatPropertyName.Create( "fillMultiply" );
public static readonly FloatPropertyName fillAdd = FloatPropertyName.Create( "fillAdd" );
public static readonly FloatPropertyName shapeColorize = FloatPropertyName.Create( "shapeColorize" );
public static readonly Sampler2DPropertyName radialMask = Sampler2DPropertyName.Create( "radialMask" );
public static readonly FloatPropertyName radialMaskStrength = FloatPropertyName.Create( "radialMaskStrength" );
public static readonly FloatPropertyName radialMaskTile = FloatPropertyName.Create( "radialMaskTile" );
public static readonly FloatPropertyName radialMaskOffset = FloatPropertyName.Create( "radialMaskOffset" );
public static readonly BoolPropertyName radialMaskRepeat = BoolPropertyName.Create( "radialMaskRepeat" );
public static readonly Sampler2DPropertyName conicMask = Sampler2DPropertyName.Create( "conicMask" );
public static readonly FloatPropertyName conicMaskStrength = FloatPropertyName.Create( "conicMaskStrength" );
public static readonly FloatPropertyName conicMaskTile = FloatPropertyName.Create( "conicMaskTile" );
public static readonly FloatPropertyName conicMaskOffset = FloatPropertyName.Create( "conicMaskOffset" );
public static readonly BoolPropertyName conicMaskRepeat = BoolPropertyName.Create( "conicMaskRepeat" );
public static readonly FloatPropertyName maskMultiply = FloatPropertyName.Create( "maskMultiply" );
public static readonly FloatPropertyName maskAdd = FloatPropertyName.Create( "maskAdd" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class EllipseTypeFlareMixMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<Texture2D> radialFill;
public readonly CustomMaterialProperty<float> radialFillStrength;
public readonly CustomMaterialProperty<float> radialFillTile;
public readonly CustomMaterialProperty<float> radialFillOffset;
public readonly CustomMaterialProperty<bool> radialFillRepeat;
public readonly CustomMaterialProperty<Texture2D> conicFill;
public readonly CustomMaterialProperty<float> conicFillStrength;
public readonly CustomMaterialProperty<float> conicFillTile;
public readonly CustomMaterialProperty<float> conicFillOffset;
public readonly CustomMaterialProperty<bool> conicFillRepeat;
public readonly CustomMaterialProperty<float> fillMultiply;
public readonly CustomMaterialProperty<float> fillAdd;
public readonly CustomMaterialProperty<float> shapeColorize;
public readonly CustomMaterialProperty<Texture2D> radialMask;
public readonly CustomMaterialProperty<float> radialMaskStrength;
public readonly CustomMaterialProperty<float> radialMaskTile;
public readonly CustomMaterialProperty<float> radialMaskOffset;
public readonly CustomMaterialProperty<bool> radialMaskRepeat;
public readonly CustomMaterialProperty<Texture2D> conicMask;
public readonly CustomMaterialProperty<float> conicMaskStrength;
public readonly CustomMaterialProperty<float> conicMaskTile;
public readonly CustomMaterialProperty<float> conicMaskOffset;
public readonly CustomMaterialProperty<bool> conicMaskRepeat;
public readonly CustomMaterialProperty<float> maskMultiply;
public readonly CustomMaterialProperty<float> maskAdd;
public EllipseTypeFlareMixMaterial()
{
///*
Shader = EllipseTypeFlareMixShader.shader.Get();
//*/
shapeScale = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.shapeScale );
radialFill = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareMixShader.radialFill );
radialFillStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.radialFillStrength );
radialFillTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.radialFillTile );
radialFillOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.radialFillOffset );
radialFillRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareMixShader.radialFillRepeat );
conicFill = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareMixShader.conicFill );
conicFillStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.conicFillStrength );
conicFillTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.conicFillTile );
conicFillOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.conicFillOffset );
conicFillRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareMixShader.conicFillRepeat );
fillMultiply = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.fillMultiply );
fillAdd = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.fillAdd );
shapeColorize = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.shapeColorize );
radialMask = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareMixShader.radialMask );
radialMaskStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.radialMaskStrength );
radialMaskTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.radialMaskTile );
radialMaskOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.radialMaskOffset );
radialMaskRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareMixShader.radialMaskRepeat );
conicMask = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareMixShader.conicMask );
conicMaskStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.conicMaskStrength );
conicMaskTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.conicMaskTile );
conicMaskOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.conicMaskOffset );
conicMaskRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareMixShader.conicMaskRepeat );
maskMultiply = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.maskMultiply );
maskAdd = new CustomMaterialProperty<float>( this, EllipseTypeFlareMixShader.maskAdd );
}
}
}

View File

@ -0,0 +1 @@
uid://bwvyiolbcntu

View File

@ -0,0 +1,4 @@
shader_type spatial;
render_mode blend_mul, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseType/EllipseTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://cnw5dyqni2cc3

View File

@ -0,0 +1,159 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class EllipseTypeFlareMultiplyShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseType/Variants/EllipseTypeFlareMultiply.gdshader"
);
//*/
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly Sampler2DPropertyName radialFill = Sampler2DPropertyName.Create( "radialFill" );
public static readonly FloatPropertyName radialFillStrength = FloatPropertyName.Create( "radialFillStrength" );
public static readonly FloatPropertyName radialFillTile = FloatPropertyName.Create( "radialFillTile" );
public static readonly FloatPropertyName radialFillOffset = FloatPropertyName.Create( "radialFillOffset" );
public static readonly BoolPropertyName radialFillRepeat = BoolPropertyName.Create( "radialFillRepeat" );
public static readonly Sampler2DPropertyName conicFill = Sampler2DPropertyName.Create( "conicFill" );
public static readonly FloatPropertyName conicFillStrength = FloatPropertyName.Create( "conicFillStrength" );
public static readonly FloatPropertyName conicFillTile = FloatPropertyName.Create( "conicFillTile" );
public static readonly FloatPropertyName conicFillOffset = FloatPropertyName.Create( "conicFillOffset" );
public static readonly BoolPropertyName conicFillRepeat = BoolPropertyName.Create( "conicFillRepeat" );
public static readonly FloatPropertyName fillMultiply = FloatPropertyName.Create( "fillMultiply" );
public static readonly FloatPropertyName fillAdd = FloatPropertyName.Create( "fillAdd" );
public static readonly FloatPropertyName shapeColorize = FloatPropertyName.Create( "shapeColorize" );
public static readonly Sampler2DPropertyName radialMask = Sampler2DPropertyName.Create( "radialMask" );
public static readonly FloatPropertyName radialMaskStrength = FloatPropertyName.Create( "radialMaskStrength" );
public static readonly FloatPropertyName radialMaskTile = FloatPropertyName.Create( "radialMaskTile" );
public static readonly FloatPropertyName radialMaskOffset = FloatPropertyName.Create( "radialMaskOffset" );
public static readonly BoolPropertyName radialMaskRepeat = BoolPropertyName.Create( "radialMaskRepeat" );
public static readonly Sampler2DPropertyName conicMask = Sampler2DPropertyName.Create( "conicMask" );
public static readonly FloatPropertyName conicMaskStrength = FloatPropertyName.Create( "conicMaskStrength" );
public static readonly FloatPropertyName conicMaskTile = FloatPropertyName.Create( "conicMaskTile" );
public static readonly FloatPropertyName conicMaskOffset = FloatPropertyName.Create( "conicMaskOffset" );
public static readonly BoolPropertyName conicMaskRepeat = BoolPropertyName.Create( "conicMaskRepeat" );
public static readonly FloatPropertyName maskMultiply = FloatPropertyName.Create( "maskMultiply" );
public static readonly FloatPropertyName maskAdd = FloatPropertyName.Create( "maskAdd" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class EllipseTypeFlareMultiplyMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<Texture2D> radialFill;
public readonly CustomMaterialProperty<float> radialFillStrength;
public readonly CustomMaterialProperty<float> radialFillTile;
public readonly CustomMaterialProperty<float> radialFillOffset;
public readonly CustomMaterialProperty<bool> radialFillRepeat;
public readonly CustomMaterialProperty<Texture2D> conicFill;
public readonly CustomMaterialProperty<float> conicFillStrength;
public readonly CustomMaterialProperty<float> conicFillTile;
public readonly CustomMaterialProperty<float> conicFillOffset;
public readonly CustomMaterialProperty<bool> conicFillRepeat;
public readonly CustomMaterialProperty<float> fillMultiply;
public readonly CustomMaterialProperty<float> fillAdd;
public readonly CustomMaterialProperty<float> shapeColorize;
public readonly CustomMaterialProperty<Texture2D> radialMask;
public readonly CustomMaterialProperty<float> radialMaskStrength;
public readonly CustomMaterialProperty<float> radialMaskTile;
public readonly CustomMaterialProperty<float> radialMaskOffset;
public readonly CustomMaterialProperty<bool> radialMaskRepeat;
public readonly CustomMaterialProperty<Texture2D> conicMask;
public readonly CustomMaterialProperty<float> conicMaskStrength;
public readonly CustomMaterialProperty<float> conicMaskTile;
public readonly CustomMaterialProperty<float> conicMaskOffset;
public readonly CustomMaterialProperty<bool> conicMaskRepeat;
public readonly CustomMaterialProperty<float> maskMultiply;
public readonly CustomMaterialProperty<float> maskAdd;
public EllipseTypeFlareMultiplyMaterial()
{
///*
Shader = EllipseTypeFlareMultiplyShader.shader.Get();
//*/
shapeScale = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.shapeScale );
radialFill = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareMultiplyShader.radialFill );
radialFillStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.radialFillStrength );
radialFillTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.radialFillTile );
radialFillOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.radialFillOffset );
radialFillRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareMultiplyShader.radialFillRepeat );
conicFill = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareMultiplyShader.conicFill );
conicFillStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.conicFillStrength );
conicFillTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.conicFillTile );
conicFillOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.conicFillOffset );
conicFillRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareMultiplyShader.conicFillRepeat );
fillMultiply = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.fillMultiply );
fillAdd = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.fillAdd );
shapeColorize = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.shapeColorize );
radialMask = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareMultiplyShader.radialMask );
radialMaskStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.radialMaskStrength );
radialMaskTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.radialMaskTile );
radialMaskOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.radialMaskOffset );
radialMaskRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareMultiplyShader.radialMaskRepeat );
conicMask = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareMultiplyShader.conicMask );
conicMaskStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.conicMaskStrength );
conicMaskTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.conicMaskTile );
conicMaskOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.conicMaskOffset );
conicMaskRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareMultiplyShader.conicMaskRepeat );
maskMultiply = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.maskMultiply );
maskAdd = new CustomMaterialProperty<float>( this, EllipseTypeFlareMultiplyShader.maskAdd );
}
}
}

View File

@ -0,0 +1,4 @@
shader_type spatial;
render_mode blend_sub, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseType/EllipseTypeFlare.gdshaderinc"

View File

@ -0,0 +1,159 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class EllipseTypeFlareSubtractShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseType/Variants/EllipseTypeFlareSubtract.gdshader"
);
//*/
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly Sampler2DPropertyName radialFill = Sampler2DPropertyName.Create( "radialFill" );
public static readonly FloatPropertyName radialFillStrength = FloatPropertyName.Create( "radialFillStrength" );
public static readonly FloatPropertyName radialFillTile = FloatPropertyName.Create( "radialFillTile" );
public static readonly FloatPropertyName radialFillOffset = FloatPropertyName.Create( "radialFillOffset" );
public static readonly BoolPropertyName radialFillRepeat = BoolPropertyName.Create( "radialFillRepeat" );
public static readonly Sampler2DPropertyName conicFill = Sampler2DPropertyName.Create( "conicFill" );
public static readonly FloatPropertyName conicFillStrength = FloatPropertyName.Create( "conicFillStrength" );
public static readonly FloatPropertyName conicFillTile = FloatPropertyName.Create( "conicFillTile" );
public static readonly FloatPropertyName conicFillOffset = FloatPropertyName.Create( "conicFillOffset" );
public static readonly BoolPropertyName conicFillRepeat = BoolPropertyName.Create( "conicFillRepeat" );
public static readonly FloatPropertyName fillMultiply = FloatPropertyName.Create( "fillMultiply" );
public static readonly FloatPropertyName fillAdd = FloatPropertyName.Create( "fillAdd" );
public static readonly FloatPropertyName shapeColorize = FloatPropertyName.Create( "shapeColorize" );
public static readonly Sampler2DPropertyName radialMask = Sampler2DPropertyName.Create( "radialMask" );
public static readonly FloatPropertyName radialMaskStrength = FloatPropertyName.Create( "radialMaskStrength" );
public static readonly FloatPropertyName radialMaskTile = FloatPropertyName.Create( "radialMaskTile" );
public static readonly FloatPropertyName radialMaskOffset = FloatPropertyName.Create( "radialMaskOffset" );
public static readonly BoolPropertyName radialMaskRepeat = BoolPropertyName.Create( "radialMaskRepeat" );
public static readonly Sampler2DPropertyName conicMask = Sampler2DPropertyName.Create( "conicMask" );
public static readonly FloatPropertyName conicMaskStrength = FloatPropertyName.Create( "conicMaskStrength" );
public static readonly FloatPropertyName conicMaskTile = FloatPropertyName.Create( "conicMaskTile" );
public static readonly FloatPropertyName conicMaskOffset = FloatPropertyName.Create( "conicMaskOffset" );
public static readonly BoolPropertyName conicMaskRepeat = BoolPropertyName.Create( "conicMaskRepeat" );
public static readonly FloatPropertyName maskMultiply = FloatPropertyName.Create( "maskMultiply" );
public static readonly FloatPropertyName maskAdd = FloatPropertyName.Create( "maskAdd" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class EllipseTypeFlareSubtractMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<Texture2D> radialFill;
public readonly CustomMaterialProperty<float> radialFillStrength;
public readonly CustomMaterialProperty<float> radialFillTile;
public readonly CustomMaterialProperty<float> radialFillOffset;
public readonly CustomMaterialProperty<bool> radialFillRepeat;
public readonly CustomMaterialProperty<Texture2D> conicFill;
public readonly CustomMaterialProperty<float> conicFillStrength;
public readonly CustomMaterialProperty<float> conicFillTile;
public readonly CustomMaterialProperty<float> conicFillOffset;
public readonly CustomMaterialProperty<bool> conicFillRepeat;
public readonly CustomMaterialProperty<float> fillMultiply;
public readonly CustomMaterialProperty<float> fillAdd;
public readonly CustomMaterialProperty<float> shapeColorize;
public readonly CustomMaterialProperty<Texture2D> radialMask;
public readonly CustomMaterialProperty<float> radialMaskStrength;
public readonly CustomMaterialProperty<float> radialMaskTile;
public readonly CustomMaterialProperty<float> radialMaskOffset;
public readonly CustomMaterialProperty<bool> radialMaskRepeat;
public readonly CustomMaterialProperty<Texture2D> conicMask;
public readonly CustomMaterialProperty<float> conicMaskStrength;
public readonly CustomMaterialProperty<float> conicMaskTile;
public readonly CustomMaterialProperty<float> conicMaskOffset;
public readonly CustomMaterialProperty<bool> conicMaskRepeat;
public readonly CustomMaterialProperty<float> maskMultiply;
public readonly CustomMaterialProperty<float> maskAdd;
public EllipseTypeFlareSubtractMaterial()
{
///*
Shader = EllipseTypeFlareSubtractShader.shader.Get();
//*/
shapeScale = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.shapeScale );
radialFill = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareSubtractShader.radialFill );
radialFillStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.radialFillStrength );
radialFillTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.radialFillTile );
radialFillOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.radialFillOffset );
radialFillRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareSubtractShader.radialFillRepeat );
conicFill = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareSubtractShader.conicFill );
conicFillStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.conicFillStrength );
conicFillTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.conicFillTile );
conicFillOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.conicFillOffset );
conicFillRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareSubtractShader.conicFillRepeat );
fillMultiply = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.fillMultiply );
fillAdd = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.fillAdd );
shapeColorize = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.shapeColorize );
radialMask = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareSubtractShader.radialMask );
radialMaskStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.radialMaskStrength );
radialMaskTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.radialMaskTile );
radialMaskOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.radialMaskOffset );
radialMaskRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareSubtractShader.radialMaskRepeat );
conicMask = new CustomMaterialProperty<Texture2D>( this, EllipseTypeFlareSubtractShader.conicMask );
conicMaskStrength = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.conicMaskStrength );
conicMaskTile = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.conicMaskTile );
conicMaskOffset = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.conicMaskOffset );
conicMaskRepeat = new CustomMaterialProperty<bool>( this, EllipseTypeFlareSubtractShader.conicMaskRepeat );
maskMultiply = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.maskMultiply );
maskAdd = new CustomMaterialProperty<float>( this, EllipseTypeFlareSubtractShader.maskAdd );
}
}
}

View File

@ -4,10 +4,10 @@ namespace Rokojori
{
// Generated by ShaderClassGenerator
public class GlowFlareMixShader
public class FlareSuperBaseShader
{
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/GlowFlare/GlowFlareMix.gdshader"
"C:/rokojori/godot-projects/winter-tales/addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/FlareSuperBase.gdshader"
);
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
@ -24,10 +24,6 @@ namespace Rokojori
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly BoolPropertyName useQuickOcclusionTest = BoolPropertyName.Create( "useQuickOcclusionTest" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
@ -38,7 +34,7 @@ namespace Rokojori
}
[Tool]
public partial class GlowFlareMixMaterial:CustomMaterial
public partial class FlareSuperBaseMaterial:CustomMaterial
{
@ -56,10 +52,6 @@ namespace Rokojori
public readonly CustomMaterialProperty<float> worldSizeVsScreenSize;
public readonly CustomMaterialProperty<Vector2> screenOffsetScale;
public readonly CustomMaterialProperty<Vector2> screenOffsetLayerSpread;
public readonly CustomMaterialProperty<Texture2D> fading;
public readonly CustomMaterialProperty<Texture2D> opacityFading;
public readonly CustomMaterialProperty<Texture2D> sizeXfading;
public readonly CustomMaterialProperty<Texture2D> sizeYfading;
public readonly CustomMaterialProperty<bool> useQuickOcclusionTest;
public readonly CustomMaterialProperty<float> occlusionZOffset;
public readonly CustomMaterialProperty<int> occlusionTestMaxSteps;
@ -67,34 +59,30 @@ namespace Rokojori
public readonly CustomMaterialProperty<float> occlusionTestViewDependingScaleAmount;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingDistance;
public GlowFlareMixMaterial()
public FlareSuperBaseMaterial()
{
Shader = GlowFlareMixShader.shader.Get();
Shader = FlareSuperBaseShader.shader.Get();
color = new CustomMaterialProperty<Color>( this, GlowFlareMixShader.color );
opacity = new CustomMaterialProperty<float>( this, GlowFlareMixShader.opacity );
opacityCurve = new CustomMaterialProperty<Texture2D>( this, GlowFlareMixShader.opacityCurve );
colorDistortion = new CustomMaterialProperty<float>( this, GlowFlareMixShader.colorDistortion );
alphaDistortion = new CustomMaterialProperty<float>( this, GlowFlareMixShader.alphaDistortion );
centerHsl = new CustomMaterialProperty<Vector4>( this, GlowFlareMixShader.centerHsl );
outsideHsl = new CustomMaterialProperty<Vector4>( this, GlowFlareMixShader.outsideHsl );
sizeX = new CustomMaterialProperty<float>( this, GlowFlareMixShader.sizeX );
sizeY = new CustomMaterialProperty<float>( this, GlowFlareMixShader.sizeY );
worldSizeScale = new CustomMaterialProperty<float>( this, GlowFlareMixShader.worldSizeScale );
screenSizeScale = new CustomMaterialProperty<float>( this, GlowFlareMixShader.screenSizeScale );
worldSizeVsScreenSize = new CustomMaterialProperty<float>( this, GlowFlareMixShader.worldSizeVsScreenSize );
screenOffsetScale = new CustomMaterialProperty<Vector2>( this, GlowFlareMixShader.screenOffsetScale );
screenOffsetLayerSpread = new CustomMaterialProperty<Vector2>( this, GlowFlareMixShader.screenOffsetLayerSpread );
fading = new CustomMaterialProperty<Texture2D>( this, GlowFlareMixShader.fading );
opacityFading = new CustomMaterialProperty<Texture2D>( this, GlowFlareMixShader.opacityFading );
sizeXfading = new CustomMaterialProperty<Texture2D>( this, GlowFlareMixShader.sizeXfading );
sizeYfading = new CustomMaterialProperty<Texture2D>( this, GlowFlareMixShader.sizeYfading );
useQuickOcclusionTest = new CustomMaterialProperty<bool>( this, GlowFlareMixShader.useQuickOcclusionTest );
occlusionZOffset = new CustomMaterialProperty<float>( this, GlowFlareMixShader.occlusionZOffset );
occlusionTestMaxSteps = new CustomMaterialProperty<int>( this, GlowFlareMixShader.occlusionTestMaxSteps );
occlusionTestStepStride = new CustomMaterialProperty<float>( this, GlowFlareMixShader.occlusionTestStepStride );
occlusionTestViewDependingScaleAmount = new CustomMaterialProperty<float>( this, GlowFlareMixShader.occlusionTestViewDependingScaleAmount );
occlusionTestViewDependingDistance = new CustomMaterialProperty<float>( this, GlowFlareMixShader.occlusionTestViewDependingDistance );
color = new CustomMaterialProperty<Color>( this, FlareSuperBaseShader.color );
opacity = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.opacity );
opacityCurve = new CustomMaterialProperty<Texture2D>( this, FlareSuperBaseShader.opacityCurve );
colorDistortion = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.colorDistortion );
alphaDistortion = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.alphaDistortion );
centerHsl = new CustomMaterialProperty<Vector4>( this, FlareSuperBaseShader.centerHsl );
outsideHsl = new CustomMaterialProperty<Vector4>( this, FlareSuperBaseShader.outsideHsl );
sizeX = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.sizeX );
sizeY = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.sizeY );
worldSizeScale = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.worldSizeScale );
screenSizeScale = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.screenSizeScale );
worldSizeVsScreenSize = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.worldSizeVsScreenSize );
screenOffsetScale = new CustomMaterialProperty<Vector2>( this, FlareSuperBaseShader.screenOffsetScale );
screenOffsetLayerSpread = new CustomMaterialProperty<Vector2>( this, FlareSuperBaseShader.screenOffsetLayerSpread );
useQuickOcclusionTest = new CustomMaterialProperty<bool>( this, FlareSuperBaseShader.useQuickOcclusionTest );
occlusionZOffset = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.occlusionZOffset );
occlusionTestMaxSteps = new CustomMaterialProperty<int>( this, FlareSuperBaseShader.occlusionTestMaxSteps );
occlusionTestStepStride = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.occlusionTestStepStride );
occlusionTestViewDependingScaleAmount = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.occlusionTestViewDependingScaleAmount );
occlusionTestViewDependingDistance = new CustomMaterialProperty<float>( this, FlareSuperBaseShader.occlusionTestViewDependingDistance );
}
}

View File

@ -0,0 +1 @@
uid://ckl8r152vrngh

View File

@ -1,7 +1,17 @@
void setFlareBillboard(
inout mat4 _MODELVIEW_MATRIX, inout mat3 _MODELVIEW_NORMAL_MATRIX,
mat4 _VIEW_MATRIX, mat4 _MAIN_CAM_INV_VIEW_MATRIX, mat4 _MODEL_MATRIX,
vec3 scale, vec2 _screenOffsetScale
#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(
@ -11,22 +21,47 @@ void setFlareBillboard(
_MODEL_MATRIX[ 3 ]
);
vec3 viewPosition = _MODELVIEW_MATRIX[ 3 ].xyz;
vec3 _viewPosition = _MODELVIEW_MATRIX[ 3 ].xyz;
viewPosition.xy += viewPosition.xy * _screenOffsetScale;
_MODELVIEW_MATRIX[ 3 ].xyz = viewPosition;
_viewPosition.xy += _viewPosition.xy * _screenOffsetScale + _offset;
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 * 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);
_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 );
}

View File

@ -1 +0,0 @@
uid://cqyc7q1cj6yso

View File

@ -1,102 +0,0 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class GlowFlareAddShader
{
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/GlowFlare/GlowFlareAdd.gdshader"
);
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName colorDistortion = FloatPropertyName.Create( "colorDistortion" );
public static readonly FloatPropertyName alphaDistortion = FloatPropertyName.Create( "alphaDistortion" );
public static readonly Vector4PropertyName centerHsl = Vector4PropertyName.Create( "centerHSL" );
public static readonly Vector4PropertyName outsideHsl = Vector4PropertyName.Create( "outsideHSL" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly BoolPropertyName useQuickOcclusionTest = BoolPropertyName.Create( "useQuickOcclusionTest" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
}
[Tool]
public partial class GlowFlareAddMaterial:CustomMaterial
{
public readonly CustomMaterialProperty<Color> color;
public readonly CustomMaterialProperty<float> opacity;
public readonly CustomMaterialProperty<Texture2D> opacityCurve;
public readonly CustomMaterialProperty<float> colorDistortion;
public readonly CustomMaterialProperty<float> alphaDistortion;
public readonly CustomMaterialProperty<Vector4> centerHsl;
public readonly CustomMaterialProperty<Vector4> outsideHsl;
public readonly CustomMaterialProperty<float> sizeX;
public readonly CustomMaterialProperty<float> sizeY;
public readonly CustomMaterialProperty<float> worldSizeScale;
public readonly CustomMaterialProperty<float> screenSizeScale;
public readonly CustomMaterialProperty<float> worldSizeVsScreenSize;
public readonly CustomMaterialProperty<Vector2> screenOffsetScale;
public readonly CustomMaterialProperty<Vector2> screenOffsetLayerSpread;
public readonly CustomMaterialProperty<Texture2D> fading;
public readonly CustomMaterialProperty<Texture2D> opacityFading;
public readonly CustomMaterialProperty<Texture2D> sizeXfading;
public readonly CustomMaterialProperty<Texture2D> sizeYfading;
public readonly CustomMaterialProperty<bool> useQuickOcclusionTest;
public readonly CustomMaterialProperty<float> occlusionZOffset;
public readonly CustomMaterialProperty<int> occlusionTestMaxSteps;
public readonly CustomMaterialProperty<float> occlusionTestStepStride;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingScaleAmount;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingDistance;
public GlowFlareAddMaterial()
{
Shader = GlowFlareAddShader.shader.Get();
color = new CustomMaterialProperty<Color>( this, GlowFlareAddShader.color );
opacity = new CustomMaterialProperty<float>( this, GlowFlareAddShader.opacity );
opacityCurve = new CustomMaterialProperty<Texture2D>( this, GlowFlareAddShader.opacityCurve );
colorDistortion = new CustomMaterialProperty<float>( this, GlowFlareAddShader.colorDistortion );
alphaDistortion = new CustomMaterialProperty<float>( this, GlowFlareAddShader.alphaDistortion );
centerHsl = new CustomMaterialProperty<Vector4>( this, GlowFlareAddShader.centerHsl );
outsideHsl = new CustomMaterialProperty<Vector4>( this, GlowFlareAddShader.outsideHsl );
sizeX = new CustomMaterialProperty<float>( this, GlowFlareAddShader.sizeX );
sizeY = new CustomMaterialProperty<float>( this, GlowFlareAddShader.sizeY );
worldSizeScale = new CustomMaterialProperty<float>( this, GlowFlareAddShader.worldSizeScale );
screenSizeScale = new CustomMaterialProperty<float>( this, GlowFlareAddShader.screenSizeScale );
worldSizeVsScreenSize = new CustomMaterialProperty<float>( this, GlowFlareAddShader.worldSizeVsScreenSize );
screenOffsetScale = new CustomMaterialProperty<Vector2>( this, GlowFlareAddShader.screenOffsetScale );
screenOffsetLayerSpread = new CustomMaterialProperty<Vector2>( this, GlowFlareAddShader.screenOffsetLayerSpread );
fading = new CustomMaterialProperty<Texture2D>( this, GlowFlareAddShader.fading );
opacityFading = new CustomMaterialProperty<Texture2D>( this, GlowFlareAddShader.opacityFading );
sizeXfading = new CustomMaterialProperty<Texture2D>( this, GlowFlareAddShader.sizeXfading );
sizeYfading = new CustomMaterialProperty<Texture2D>( this, GlowFlareAddShader.sizeYfading );
useQuickOcclusionTest = new CustomMaterialProperty<bool>( this, GlowFlareAddShader.useQuickOcclusionTest );
occlusionZOffset = new CustomMaterialProperty<float>( this, GlowFlareAddShader.occlusionZOffset );
occlusionTestMaxSteps = new CustomMaterialProperty<int>( this, GlowFlareAddShader.occlusionTestMaxSteps );
occlusionTestStepStride = new CustomMaterialProperty<float>( this, GlowFlareAddShader.occlusionTestStepStride );
occlusionTestViewDependingScaleAmount = new CustomMaterialProperty<float>( this, GlowFlareAddShader.occlusionTestViewDependingScaleAmount );
occlusionTestViewDependingDistance = new CustomMaterialProperty<float>( this, GlowFlareAddShader.occlusionTestViewDependingDistance );
}
}
}

View File

@ -1 +0,0 @@
uid://b751ojo6ggfls

View File

@ -1,178 +0,0 @@
#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/Shaders/Flares/Flares.gdshaderinc"
// COLOR
group_uniforms Color;
uniform sampler2D depthTexture:hint_depth_texture;
uniform vec4 color : source_color = vec4( 0.887, 0.434, 0.233, 1.0 );
uniform float opacity = 1;
uniform sampler2D opacityCurve:source_color;
uniform float colorDistortion:hint_range(0.2,20) = 2;
uniform float alphaDistortion:hint_range(0.2,20) = 2;
uniform vec4 centerHSL = vec4( 0.08, 0.0, 0.18, 1.0 );
varying vec4 centerColor;
uniform vec4 outsideHSL = vec4( -0.05, 1.65, 0.02, 0.0 );
varying vec4 outsideColor;
group_uniforms;
// SIZE
group_uniforms Size;
uniform float sizeX:hint_range(1,100) = 1;
uniform float sizeY:hint_range(1,100) = 1;
uniform float worldSizeScale = 1;
uniform float screenSizeScale = 1;
uniform float worldSize_vs_screenSize:hint_range(0,1) = 0.5;
group_uniforms;
// SCREEN OFFSET
group_uniforms ScreenOffset;
uniform vec2 screenOffsetScale = vec2( 0, 0 );
uniform vec2 screenOffsetLayerSpread = vec2( 0, 0 );
group_uniforms;
// Fading
group_uniforms Fading;
uniform sampler2D fading:source_color, repeat_disable, filter_linear;
uniform sampler2D opacityFading:source_color, repeat_disable, filter_linear;
uniform sampler2D sizeXfading:source_color, repeat_disable, filter_linear;
uniform sampler2D sizeYfading:source_color, repeat_disable, filter_linear;
varying float opacityFadeValue;
group_uniforms;
// OCCLUSION
group_uniforms Occlusion;
uniform bool useQuickOcclusionTest = false;
uniform float occlusionZOffset:hint_range(-30,30) = 0;
uniform int occlusionTestMaxSteps = 10;
uniform float occlusionTestStepStride = 1;
uniform float occlusionTest_ViewDependingScaleAmount:hint_range(0,1) = 0.5;
uniform float occlusionTest_ViewDependingDistance = 100;
varying float occlusionAlpha;
group_uniforms;
// void setFlareBillboard(
// inout mat4 _MODELVIEW_MATRIX, inout mat3 _MODELVIEW_NORMAL_MATRIX,
// mat4 _VIEW_MATRIX, mat4 _MAIN_CAM_INV_VIEW_MATRIX, mat4 _MODEL_MATRIX,
// vec3 scale, vec2 _screenOffsetScale
// )
// {
// _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 * 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);
// }
void vertex()
{
float normalizedIndex = VERTEX.z;
VERTEX.z = 0.0;
vec3 viewOffset = viewToWorldDirection( vec3( 0, 0, occlusionZOffset ), INV_VIEW_MATRIX );
vec3 nodePositionView = worldToView( NODE_POSITION_WORLD + viewOffset, VIEW_MATRIX );
vec2 screenPosition = viewToScreen( nodePositionView, PROJECTION_MATRIX );
float fadeValue = textureLod( fading, screenPosition, 0.0 ).r;
float opacityValue = textureLod( opacityFading, screenPosition, 0.0 ).r;
float sizeXFade = textureLod( sizeXfading, screenPosition, 0.0 ).r;
float sizeYFade = textureLod( sizeYfading, screenPosition, 0.0 ).r;
float nodeScale = length( extractScale( MODEL_MATRIX ) );
float sX = sizeX * sizeXFade;
float sY = sizeY * sizeYFade;
vec2 uvPixelSize = vec2( 1.0, 1.0 ) / VIEWPORT_SIZE ;
vec2 scaledUVPixelSize = uvPixelSize * max( 1.0, nodePositionView.z / occlusionTest_ViewDependingDistance );
uvPixelSize = mix( uvPixelSize, scaledUVPixelSize, occlusionTest_ViewDependingScaleAmount );
float occlusionValue = useQuickOcclusionTest ?
getQuickOcclusionAt( depthTexture, nodePositionView, uvPixelSize,
occlusionTestMaxSteps, occlusionTestStepStride,
PROJECTION_MATRIX, INV_PROJECTION_MATRIX ) :
getOcclusionAt( depthTexture, nodePositionView, uvPixelSize,
occlusionTestMaxSteps, occlusionTestStepStride,
PROJECTION_MATRIX, INV_PROJECTION_MATRIX );
occlusionAlpha = occlusionValue * fadeValue;
float camDist = length( NODE_POSITION_WORLD - CAMERA_POSITION_WORLD );
vec2 sizeScaled = vec2( sX, sY ) * occlusionAlpha * nodeScale;
vec2 size = mix( sizeScaled * worldSizeScale, sizeScaled * camDist * 0.1 * screenSizeScale, worldSize_vs_screenSize );
setFlareBillboard(
MODELVIEW_MATRIX, MODELVIEW_NORMAL_MATRIX,
VIEW_MATRIX, MAIN_CAM_INV_VIEW_MATRIX, MODEL_MATRIX,
vec3( size.x, size.y, 1.0 ), screenOffsetScale + screenOffsetLayerSpread * ( normalizedIndex * 2.0 - 1.0 )
);
vec3 hsl = RGBtoHSL( color.rgb );
vec3 shiftedHSL = shiftHSL( hsl, centerHSL.rgb, 60.0 );
vec3 shiftedRGB = HSLtoRGB( shiftedHSL );
centerColor = vec4( shiftRGBwithHSL( color.rgb, centerHSL.rgb, 60.0 ), centerHSL.a * color.a );
outsideColor = vec4( shiftRGBwithHSL( color.rgb, outsideHSL.rgb, 60.0 ), outsideHSL.a * color.a );
opacityFadeValue = fadeValue * opacityValue;
float opacityMapValue = textureLod( opacityCurve, vec2( normalizedIndex, 0.0 ), 0.0 ).r;
opacityFadeValue *= opacityMapValue;
}
void fragment()
{
float distanceToCircle = 1.0 - min( 1, length( UV - vec2( 0.5, 0.5 ) ) / 0.5 );
float alpha = pow( distanceToCircle, alphaDistortion );
alpha = min( 1, alpha );
distanceToCircle = pow( distanceToCircle, colorDistortion );
float t = min( 1, distanceToCircle );
vec4 mixedColor = mixThreeColors( outsideColor, color, centerColor, t );
mixedColor.a *= alpha;
ALBEDO = mixedColor.rgb;
ALPHA = mixedColor.a * occlusionAlpha * opacity * opacityFadeValue;
}

View File

@ -1 +0,0 @@
uid://dv4j06odwqjvu

View File

@ -1 +0,0 @@
uid://bvjxbgnsu8pcj

View File

@ -1 +0,0 @@
uid://cusgp711ny0pc

View File

@ -0,0 +1,89 @@
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/Flares.gdshaderinc"
// SHAPE
group_uniforms Shape;
uniform int shapeType:hint_range(0,12);
uniform float shapeScale:hint_range(0,1) = 0.5;
uniform float minShapeDistance = 0;
uniform float maxShapeDistance = 0.1;
uniform float minShapeDistanceColor = -0.5;
uniform float maxShapeDistanceColor = 0;
uniform float shapeColorDistortion:hint_range(0.2,20) = 1;
uniform float shapeAlphaDistortion:hint_range(0.2,20) = 1;
uniform vec4 innerHSL = vec4( 0.0, 0.0, 0.0, 1.0 );
uniform vec4 outerHSL = vec4( 0.0, 0.0, 0.0, 1.0 );
group_uniforms;
varying vec4 innerColor;
varying vec4 outerColor;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/BaseFlare/BaseFlare-Variables.gdshaderinc"
#define GENERATE_FLARE_VERTEX_DATA \
{ \
float _rgbScale = getRGBScale( combinedColor ); \
innerColor = vec4( shiftRGBwithHSL( combinedColor.rgb / _rgbScale, innerHSL.rgb, 60.0) * _rgbScale, innerHSL.a * combinedColor.a ); \
outerColor = vec4( shiftRGBwithHSL( combinedColor.rgb / _rgbScale, outerHSL.rgb, 60.0) * _rgbScale, outerHSL.a * combinedColor.a ); \
} \
float getShapeDistance(
int _shapeType, float _shapeScale, float _shapeRotation, vec2 _uv, float _minShapeDistance, float _maxShapeDistance )
{
float distance = 0.0;
// _shapeRotation += 180.0;
_uv -= vec2( 0.5 );
_uv = rotate_v2( _uv, _shapeRotation / 180.0 * 3.141592653 );
_uv /= _shapeScale;
if ( _shapeType == 0 ) { distance = sdCircle( _uv, 0.5 ); }
else if ( _shapeType == 1 ) { distance = sdRoundedX( _uv, 0.5, 0.2 ); }
else if ( _shapeType == 2 ) { distance = sdEquilateralTriangle( _uv, 0.666 ); }
else if ( _shapeType == 3 ) { distance = sdBox( _uv, vec2( 0.5 ) ); }
else if ( _shapeType == 4 ) { distance = sdPentagon( _uv, 0.5 ); }
else if ( _shapeType == 5 ) { distance = sdHexagon( _uv, 0.5 ); }
else if ( _shapeType == 6 ) { distance = sdOctogon( _uv, 0.5 ); }
else if ( _shapeType == 7 ) { distance = sdHexagram( _uv, 0.333); }
else if ( _shapeType == 8 ) { distance = sdPentagram( _uv, 0.6666 ); }
else if ( _shapeType == 9 ) { distance = sdMoon( _uv, 0.0, 0.5, 0.4 ); }
else if ( _shapeType == 10 ) { distance = sdMoon( _uv, 0.5, 0.5, 0.4 ); }
else if ( _shapeType == 11 ) { distance = sdMoon( _uv, 0.1, 0.5, 0.3 ); }
else if ( _shapeType == 12 ) { distance = sdHeart( _uv ); }
return distance;
}
vec4 generateFlare( vec2 _uv, vec4 _color, float _opacity )
{
float distance = getShapeDistance( shapeType, shapeScale, 0, _uv, minShapeDistance, maxShapeDistance );
float normalizedAlphaDistance = normalizeToRange01( distance, minShapeDistance, maxShapeDistance );
float alphaT = 1.0 - normalizedAlphaDistance;
float normalizedColorDistance = normalizeToRange01( distance, minShapeDistanceColor, maxShapeDistanceColor );
float colorT = 1.0 - normalizedColorDistance;
colorT = pow( colorT, shapeColorDistortion );
alphaT = pow( alphaT, shapeAlphaDistortion );
float t = min( 1, colorT );
vec4 mixedColor = mixThreeColors( outerColor, _color, innerColor, t );
mixedColor.a *= alphaT * _opacity;
return mixedColor;
}
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/BaseFlare/BaseFlare-VertexFragment.gdshaderinc"

View File

@ -0,0 +1 @@
uid://bot3nu2eheylq

View File

@ -1,4 +1,4 @@
shader_type spatial;
render_mode blend_add, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/GlowFlare/GlowFlareBase.gdshaderinc"
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/SDFType/SDFTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://bghg0b1pecnwd

View File

@ -0,0 +1,111 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class SDFTypeFlareAddShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/SDFType/Variants/SDFTypeFlareAdd.gdshader"
);
//*/
public static readonly IntPropertyName shapeType = IntPropertyName.Create( "shapeType" );
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly FloatPropertyName minShapeDistance = FloatPropertyName.Create( "minShapeDistance" );
public static readonly FloatPropertyName maxShapeDistance = FloatPropertyName.Create( "maxShapeDistance" );
public static readonly FloatPropertyName minShapeDistanceColor = FloatPropertyName.Create( "minShapeDistanceColor" );
public static readonly FloatPropertyName maxShapeDistanceColor = FloatPropertyName.Create( "maxShapeDistanceColor" );
public static readonly FloatPropertyName shapeColorDistortion = FloatPropertyName.Create( "shapeColorDistortion" );
public static readonly FloatPropertyName shapeAlphaDistortion = FloatPropertyName.Create( "shapeAlphaDistortion" );
public static readonly Vector4PropertyName innerHsl = Vector4PropertyName.Create( "innerHSL" );
public static readonly Vector4PropertyName outerHsl = Vector4PropertyName.Create( "outerHSL" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class SDFTypeFlareAddMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<int> shapeType;
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<float> minShapeDistance;
public readonly CustomMaterialProperty<float> maxShapeDistance;
public readonly CustomMaterialProperty<float> minShapeDistanceColor;
public readonly CustomMaterialProperty<float> maxShapeDistanceColor;
public readonly CustomMaterialProperty<float> shapeColorDistortion;
public readonly CustomMaterialProperty<float> shapeAlphaDistortion;
public readonly CustomMaterialProperty<Vector4> innerHsl;
public readonly CustomMaterialProperty<Vector4> outerHsl;
public SDFTypeFlareAddMaterial()
{
///*
Shader = SDFTypeFlareAddShader.shader.Get();
//*/
shapeType = new CustomMaterialProperty<int>( this, SDFTypeFlareAddShader.shapeType );
shapeScale = new CustomMaterialProperty<float>( this, SDFTypeFlareAddShader.shapeScale );
minShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareAddShader.minShapeDistance );
maxShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareAddShader.maxShapeDistance );
minShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareAddShader.minShapeDistanceColor );
maxShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareAddShader.maxShapeDistanceColor );
shapeColorDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareAddShader.shapeColorDistortion );
shapeAlphaDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareAddShader.shapeAlphaDistortion );
innerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareAddShader.innerHsl );
outerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareAddShader.outerHsl );
}
}
}

View File

@ -0,0 +1 @@
uid://pitbnp6cpk4f

View File

@ -1,4 +1,4 @@
shader_type spatial;
render_mode blend_mix, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/GlowFlare/GlowFlareBase.gdshaderinc"
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/SDFType/SDFTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://k5rstlw8ssw8

View File

@ -0,0 +1,111 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class SDFTypeFlareMixShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/SDFType/Variants/SDFTypeFlareMix.gdshader"
);
//*/
public static readonly IntPropertyName shapeType = IntPropertyName.Create( "shapeType" );
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly FloatPropertyName minShapeDistance = FloatPropertyName.Create( "minShapeDistance" );
public static readonly FloatPropertyName maxShapeDistance = FloatPropertyName.Create( "maxShapeDistance" );
public static readonly FloatPropertyName minShapeDistanceColor = FloatPropertyName.Create( "minShapeDistanceColor" );
public static readonly FloatPropertyName maxShapeDistanceColor = FloatPropertyName.Create( "maxShapeDistanceColor" );
public static readonly FloatPropertyName shapeColorDistortion = FloatPropertyName.Create( "shapeColorDistortion" );
public static readonly FloatPropertyName shapeAlphaDistortion = FloatPropertyName.Create( "shapeAlphaDistortion" );
public static readonly Vector4PropertyName innerHsl = Vector4PropertyName.Create( "innerHSL" );
public static readonly Vector4PropertyName outerHsl = Vector4PropertyName.Create( "outerHSL" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class SDFTypeFlareMixMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<int> shapeType;
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<float> minShapeDistance;
public readonly CustomMaterialProperty<float> maxShapeDistance;
public readonly CustomMaterialProperty<float> minShapeDistanceColor;
public readonly CustomMaterialProperty<float> maxShapeDistanceColor;
public readonly CustomMaterialProperty<float> shapeColorDistortion;
public readonly CustomMaterialProperty<float> shapeAlphaDistortion;
public readonly CustomMaterialProperty<Vector4> innerHsl;
public readonly CustomMaterialProperty<Vector4> outerHsl;
public SDFTypeFlareMixMaterial()
{
///*
Shader = SDFTypeFlareMixShader.shader.Get();
//*/
shapeType = new CustomMaterialProperty<int>( this, SDFTypeFlareMixShader.shapeType );
shapeScale = new CustomMaterialProperty<float>( this, SDFTypeFlareMixShader.shapeScale );
minShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareMixShader.minShapeDistance );
maxShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareMixShader.maxShapeDistance );
minShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareMixShader.minShapeDistanceColor );
maxShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareMixShader.maxShapeDistanceColor );
shapeColorDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareMixShader.shapeColorDistortion );
shapeAlphaDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareMixShader.shapeAlphaDistortion );
innerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareMixShader.innerHsl );
outerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareMixShader.outerHsl );
}
}
}

View File

@ -0,0 +1 @@
uid://bvoka7aow2t65

View File

@ -0,0 +1,4 @@
shader_type spatial;
render_mode blend_mul, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/SDFType/SDFTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://gmstpp074nd3

View File

@ -0,0 +1,111 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class SDFTypeFlareMultiplyShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/SDFType/Variants/SDFTypeFlareMultiply.gdshader"
);
//*/
public static readonly IntPropertyName shapeType = IntPropertyName.Create( "shapeType" );
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly FloatPropertyName minShapeDistance = FloatPropertyName.Create( "minShapeDistance" );
public static readonly FloatPropertyName maxShapeDistance = FloatPropertyName.Create( "maxShapeDistance" );
public static readonly FloatPropertyName minShapeDistanceColor = FloatPropertyName.Create( "minShapeDistanceColor" );
public static readonly FloatPropertyName maxShapeDistanceColor = FloatPropertyName.Create( "maxShapeDistanceColor" );
public static readonly FloatPropertyName shapeColorDistortion = FloatPropertyName.Create( "shapeColorDistortion" );
public static readonly FloatPropertyName shapeAlphaDistortion = FloatPropertyName.Create( "shapeAlphaDistortion" );
public static readonly Vector4PropertyName innerHsl = Vector4PropertyName.Create( "innerHSL" );
public static readonly Vector4PropertyName outerHsl = Vector4PropertyName.Create( "outerHSL" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class SDFTypeFlareMultiplyMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<int> shapeType;
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<float> minShapeDistance;
public readonly CustomMaterialProperty<float> maxShapeDistance;
public readonly CustomMaterialProperty<float> minShapeDistanceColor;
public readonly CustomMaterialProperty<float> maxShapeDistanceColor;
public readonly CustomMaterialProperty<float> shapeColorDistortion;
public readonly CustomMaterialProperty<float> shapeAlphaDistortion;
public readonly CustomMaterialProperty<Vector4> innerHsl;
public readonly CustomMaterialProperty<Vector4> outerHsl;
public SDFTypeFlareMultiplyMaterial()
{
///*
Shader = SDFTypeFlareMultiplyShader.shader.Get();
//*/
shapeType = new CustomMaterialProperty<int>( this, SDFTypeFlareMultiplyShader.shapeType );
shapeScale = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.shapeScale );
minShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.minShapeDistance );
maxShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.maxShapeDistance );
minShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.minShapeDistanceColor );
maxShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.maxShapeDistanceColor );
shapeColorDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.shapeColorDistortion );
shapeAlphaDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.shapeAlphaDistortion );
innerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareMultiplyShader.innerHsl );
outerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareMultiplyShader.outerHsl );
}
}
}

View File

@ -0,0 +1 @@
uid://dcn3nwgoweygd

View File

@ -0,0 +1,4 @@
shader_type spatial;
render_mode blend_sub, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/SDFType/SDFTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://cawtys20qq5yx

View File

@ -0,0 +1,111 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class SDFTypeFlareSubtractShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/SDFType/Variants/SDFTypeFlareSubtract.gdshader"
);
//*/
public static readonly IntPropertyName shapeType = IntPropertyName.Create( "shapeType" );
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly FloatPropertyName minShapeDistance = FloatPropertyName.Create( "minShapeDistance" );
public static readonly FloatPropertyName maxShapeDistance = FloatPropertyName.Create( "maxShapeDistance" );
public static readonly FloatPropertyName minShapeDistanceColor = FloatPropertyName.Create( "minShapeDistanceColor" );
public static readonly FloatPropertyName maxShapeDistanceColor = FloatPropertyName.Create( "maxShapeDistanceColor" );
public static readonly FloatPropertyName shapeColorDistortion = FloatPropertyName.Create( "shapeColorDistortion" );
public static readonly FloatPropertyName shapeAlphaDistortion = FloatPropertyName.Create( "shapeAlphaDistortion" );
public static readonly Vector4PropertyName innerHsl = Vector4PropertyName.Create( "innerHSL" );
public static readonly Vector4PropertyName outerHsl = Vector4PropertyName.Create( "outerHSL" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class SDFTypeFlareSubtractMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<int> shapeType;
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<float> minShapeDistance;
public readonly CustomMaterialProperty<float> maxShapeDistance;
public readonly CustomMaterialProperty<float> minShapeDistanceColor;
public readonly CustomMaterialProperty<float> maxShapeDistanceColor;
public readonly CustomMaterialProperty<float> shapeColorDistortion;
public readonly CustomMaterialProperty<float> shapeAlphaDistortion;
public readonly CustomMaterialProperty<Vector4> innerHsl;
public readonly CustomMaterialProperty<Vector4> outerHsl;
public SDFTypeFlareSubtractMaterial()
{
///*
Shader = SDFTypeFlareSubtractShader.shader.Get();
//*/
shapeType = new CustomMaterialProperty<int>( this, SDFTypeFlareSubtractShader.shapeType );
shapeScale = new CustomMaterialProperty<float>( this, SDFTypeFlareSubtractShader.shapeScale );
minShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareSubtractShader.minShapeDistance );
maxShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareSubtractShader.maxShapeDistance );
minShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareSubtractShader.minShapeDistanceColor );
maxShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareSubtractShader.maxShapeDistanceColor );
shapeColorDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareSubtractShader.shapeColorDistortion );
shapeAlphaDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareSubtractShader.shapeAlphaDistortion );
innerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareSubtractShader.innerHsl );
outerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareSubtractShader.outerHsl );
}
}
}

View File

@ -0,0 +1 @@
uid://ctiiphbrfpvk1

View File

@ -1 +0,0 @@
uid://ibo7qa8hf6he

View File

@ -1,135 +0,0 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class ShapeFlareAddShader
{
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/ShapeFlare/ShapeFlareAdd.gdshader"
);
public static readonly IntPropertyName shapeType = IntPropertyName.Create( "shapeType" );
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly FloatPropertyName shapeRotation = FloatPropertyName.Create( "shapeRotation" );
public static readonly FloatPropertyName minShapeDistance = FloatPropertyName.Create( "minShapeDistance" );
public static readonly FloatPropertyName maxShapeDistance = FloatPropertyName.Create( "maxShapeDistance" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName colorDistortion = FloatPropertyName.Create( "colorDistortion" );
public static readonly FloatPropertyName alphaDistortion = FloatPropertyName.Create( "alphaDistortion" );
public static readonly Vector4PropertyName centerHsl = Vector4PropertyName.Create( "centerHSL" );
public static readonly Vector4PropertyName outsideHsl = Vector4PropertyName.Create( "outsideHSL" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName minShapeDistanceColor = FloatPropertyName.Create( "minShapeDistanceColor" );
public static readonly FloatPropertyName maxShapeDistanceColor = FloatPropertyName.Create( "maxShapeDistanceColor" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly BoolPropertyName useQuickOcclusionTest = BoolPropertyName.Create( "useQuickOcclusionTest" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
}
[Tool]
public partial class ShapeFlareAddMaterial:CustomMaterial
{
public readonly CustomMaterialProperty<int> shapeType;
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<float> shapeRotation;
public readonly CustomMaterialProperty<float> minShapeDistance;
public readonly CustomMaterialProperty<float> maxShapeDistance;
public readonly CustomMaterialProperty<Color> color;
public readonly CustomMaterialProperty<float> opacity;
public readonly CustomMaterialProperty<Texture2D> opacityCurve;
public readonly CustomMaterialProperty<float> colorDistortion;
public readonly CustomMaterialProperty<float> alphaDistortion;
public readonly CustomMaterialProperty<Vector4> centerHsl;
public readonly CustomMaterialProperty<Vector4> outsideHsl;
public readonly CustomMaterialProperty<float> minHueRandom;
public readonly CustomMaterialProperty<float> maxHueRandom;
public readonly CustomMaterialProperty<float> minShapeDistanceColor;
public readonly CustomMaterialProperty<float> maxShapeDistanceColor;
public readonly CustomMaterialProperty<float> sizeX;
public readonly CustomMaterialProperty<float> sizeY;
public readonly CustomMaterialProperty<float> worldSizeScale;
public readonly CustomMaterialProperty<float> screenSizeScale;
public readonly CustomMaterialProperty<float> worldSizeVsScreenSize;
public readonly CustomMaterialProperty<float> randomScaleMin;
public readonly CustomMaterialProperty<float> randomScaleMax;
public readonly CustomMaterialProperty<Vector2> screenOffsetScale;
public readonly CustomMaterialProperty<Vector2> screenOffsetLayerSpread;
public readonly CustomMaterialProperty<Texture2D> fading;
public readonly CustomMaterialProperty<Texture2D> opacityFading;
public readonly CustomMaterialProperty<Texture2D> sizeXfading;
public readonly CustomMaterialProperty<Texture2D> sizeYfading;
public readonly CustomMaterialProperty<bool> useQuickOcclusionTest;
public readonly CustomMaterialProperty<float> occlusionZOffset;
public readonly CustomMaterialProperty<int> occlusionTestMaxSteps;
public readonly CustomMaterialProperty<float> occlusionTestStepStride;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingScaleAmount;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingDistance;
public ShapeFlareAddMaterial()
{
Shader = ShapeFlareAddShader.shader.Get();
shapeType = new CustomMaterialProperty<int>( this, ShapeFlareAddShader.shapeType );
shapeScale = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.shapeScale );
shapeRotation = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.shapeRotation );
minShapeDistance = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.minShapeDistance );
maxShapeDistance = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.maxShapeDistance );
color = new CustomMaterialProperty<Color>( this, ShapeFlareAddShader.color );
opacity = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.opacity );
opacityCurve = new CustomMaterialProperty<Texture2D>( this, ShapeFlareAddShader.opacityCurve );
colorDistortion = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.colorDistortion );
alphaDistortion = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.alphaDistortion );
centerHsl = new CustomMaterialProperty<Vector4>( this, ShapeFlareAddShader.centerHsl );
outsideHsl = new CustomMaterialProperty<Vector4>( this, ShapeFlareAddShader.outsideHsl );
minHueRandom = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.minHueRandom );
maxHueRandom = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.maxHueRandom );
minShapeDistanceColor = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.minShapeDistanceColor );
maxShapeDistanceColor = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.maxShapeDistanceColor );
sizeX = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.sizeX );
sizeY = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.sizeY );
worldSizeScale = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.worldSizeScale );
screenSizeScale = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.screenSizeScale );
worldSizeVsScreenSize = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.worldSizeVsScreenSize );
randomScaleMin = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.randomScaleMin );
randomScaleMax = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.randomScaleMax );
screenOffsetScale = new CustomMaterialProperty<Vector2>( this, ShapeFlareAddShader.screenOffsetScale );
screenOffsetLayerSpread = new CustomMaterialProperty<Vector2>( this, ShapeFlareAddShader.screenOffsetLayerSpread );
fading = new CustomMaterialProperty<Texture2D>( this, ShapeFlareAddShader.fading );
opacityFading = new CustomMaterialProperty<Texture2D>( this, ShapeFlareAddShader.opacityFading );
sizeXfading = new CustomMaterialProperty<Texture2D>( this, ShapeFlareAddShader.sizeXfading );
sizeYfading = new CustomMaterialProperty<Texture2D>( this, ShapeFlareAddShader.sizeYfading );
useQuickOcclusionTest = new CustomMaterialProperty<bool>( this, ShapeFlareAddShader.useQuickOcclusionTest );
occlusionZOffset = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.occlusionZOffset );
occlusionTestMaxSteps = new CustomMaterialProperty<int>( this, ShapeFlareAddShader.occlusionTestMaxSteps );
occlusionTestStepStride = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.occlusionTestStepStride );
occlusionTestViewDependingScaleAmount = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.occlusionTestViewDependingScaleAmount );
occlusionTestViewDependingDistance = new CustomMaterialProperty<float>( this, ShapeFlareAddShader.occlusionTestViewDependingDistance );
}
}
}

View File

@ -1 +0,0 @@
uid://btnca61nvu55p

View File

@ -1,241 +0,0 @@
#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"
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/Flares.gdshaderinc"
// SHAPE
group_uniforms Shape;
uniform int shapeType:hint_range(0,12);
uniform float shapeScale:hint_range(0,1) = 0.5;
uniform float shapeRotation:hint_range(-180,180) = 0;
uniform float minShapeDistance = 0;
uniform float maxShapeDistance = 0.05;
group_uniforms;
// COLOR
group_uniforms Color;
uniform sampler2D depthTexture:hint_depth_texture;
uniform vec4 color : source_color = vec4( 0.887, 0.434, 0.233, 1.0 );
uniform float opacity = 1;
uniform sampler2D opacityCurve:source_color;
uniform float colorDistortion:hint_range(0.2,20) = 2;
uniform float alphaDistortion:hint_range(0.2,20) = 2;
uniform vec4 centerHSL = vec4( 0.08, 0.0, 0.18, 1.0 );
varying vec4 centerColor;
uniform vec4 outsideHSL = vec4( -0.05, 1.65, 0.02, 0.0 );
varying vec4 outsideColor;
uniform float minHueRandom = 0;
uniform float maxHueRandom = 0;
uniform float minShapeDistanceColor = 0;
uniform float maxShapeDistanceColor = 0.05;
group_uniforms;
// SIZE
group_uniforms Size;
uniform float sizeX:hint_range(1,100) = 1;
uniform float sizeY:hint_range(1,100) = 1;
uniform float worldSizeScale = 1;
uniform float screenSizeScale = 1;
uniform float worldSize_vs_screenSize:hint_range(0,1) = 0.5;
uniform float randomScaleMin = 1.0;
uniform float randomScaleMax = 1.0;
group_uniforms;
// SCREEN OFFSET
group_uniforms ScreenOffset;
uniform vec2 screenOffsetScale = vec2( 0, 0 );
uniform vec2 screenOffsetLayerSpread = vec2( 0, 0 );
group_uniforms;
// Fading
group_uniforms Fading;
// uniform sampler2D fading:source_color, repeat_disable, filter_linear;
// uniform sampler2D opacityFading:source_color, repeat_disable, filter_linear;
// uniform sampler2D sizeXfading:source_color, repeat_disable, filter_linear;
// uniform sampler2D sizeYfading:source_color, repeat_disable, filter_linear;
uniform float fadingPower = 1.0;
uniform float opacityFadingPower = 1.0;
uniform float sizeXfadingPower = 1.0;
uniform float sizeYfadingPower = 1.0;
varying float opacityFadeValue;
group_uniforms;
// OCCLUSION
group_uniforms Occlusion;
uniform bool useQuickOcclusionTest = false;
uniform float occlusionZOffset:hint_range(-30,30) = 0;
uniform int occlusionTestMaxSteps = 10;
uniform float occlusionTestStepStride = 1;
uniform float occlusionTest_ViewDependingScaleAmount:hint_range(0,1) = 0.5;
uniform float occlusionTest_ViewDependingDistance = 100;
varying float occlusionAlpha;
group_uniforms;
float getShapeDistance(
int _shapeType, float _shapeScale, float _shapeRotation, vec2 _uv, float _minShapeDistance, float _maxShapeDistance )
{
float distance = 0.0;
_shapeRotation += 180.0;
_uv -= vec2( 0.5 );
_uv = rotate_v2( _uv, _shapeRotation / 180.0 * 3.141592653 );
_uv /= _shapeScale;
if ( _shapeType == 0 ) { distance = sdCircle( _uv, 0.5 ); }
else if ( _shapeType == 1 ) { distance = sdRoundedX( _uv, 0.5, 0.2 ); }
else if ( _shapeType == 2 ) { distance = sdEquilateralTriangle( _uv, 0.666 ); }
else if ( _shapeType == 3 ) { distance = sdBox( _uv, vec2( 0.5 ) ); }
else if ( _shapeType == 4 ) { distance = sdPentagon( _uv, 0.5 ); }
else if ( _shapeType == 5 ) { distance = sdHexagon( _uv, 0.5 ); }
else if ( _shapeType == 6 ) { distance = sdOctogon( _uv, 0.5 ); }
else if ( _shapeType == 7 ) { distance = sdHexagram( _uv, 0.333); }
else if ( _shapeType == 8 ) { distance = sdPentagram( _uv, 0.6666 ); }
else if ( _shapeType == 9 ) { distance = sdMoon( _uv, 0.0, 0.5, 0.4 ); }
else if ( _shapeType == 10 ) { distance = sdMoon( _uv, 0.5, 0.5, 0.4 ); }
else if ( _shapeType == 11 ) { distance = sdMoon( _uv, 0.1, 0.5, 0.3 ); }
else if ( _shapeType == 12 ) { distance = sdHeart( _uv ); }
return distance;
// float normalizedDistance = normalizeToRange01( distance, _minShapeDistance, _maxShapeDistance );
// return 1.0 - normalizedDistance;
}
varying vec4 combinedColor;
void vertex()
{
float normalizedIndex = VERTEX.z;
VERTEX.z = 0.0;
vec3 viewOffset = viewToWorldDirection( vec3( 0, 0, occlusionZOffset ), INV_VIEW_MATRIX );
vec3 nodePositionView = worldToView( NODE_POSITION_WORLD + viewOffset, VIEW_MATRIX );
vec2 screenPosition = viewToScreen( nodePositionView, PROJECTION_MATRIX );
float edgeDistance = max( 0.0, -sdBox( screenPosition - vec2( 0.5 ), vec2( 0.5 ) ) ) * 2.0;
// float fadeValue = textureLod( fading, screenPosition, 0.0 ).r;
// float opacityValue = textureLod( opacityFading, screenPosition, 0.0 ).r;
// float sizeXFade = textureLod( sizeXfading, screenPosition, 0.0 ).r;
// float sizeYFade = textureLod( sizeYfading, screenPosition, 0.0 ).r;
float fadeValue = pow( edgeDistance, fadingPower );
float opacityValue = pow( edgeDistance, opacityFadingPower );
float sizeXFade = pow( edgeDistance, sizeXfadingPower );
float sizeYFade = pow( edgeDistance, sizeYfadingPower );
float nodeScale = length( extractScale( MODEL_MATRIX ) );
float sX = sizeX * sizeXFade;
float sY = sizeY * sizeYFade;
vec2 uvPixelSize = vec2( 1.0, 1.0 ) / VIEWPORT_SIZE ;
vec2 scaledUVPixelSize = uvPixelSize * max( 1.0, nodePositionView.z / occlusionTest_ViewDependingDistance );
uvPixelSize = mix( uvPixelSize, scaledUVPixelSize, occlusionTest_ViewDependingScaleAmount );
float occlusionValue = useQuickOcclusionTest ?
getQuickOcclusionAt( depthTexture, nodePositionView, uvPixelSize,
occlusionTestMaxSteps, occlusionTestStepStride,
PROJECTION_MATRIX, INV_PROJECTION_MATRIX ) :
getOcclusionAt( depthTexture, nodePositionView, uvPixelSize,
occlusionTestMaxSteps, occlusionTestStepStride,
PROJECTION_MATRIX, INV_PROJECTION_MATRIX );
occlusionAlpha = occlusionValue * fadeValue;
float camDist = length( NODE_POSITION_WORLD - CAMERA_POSITION_WORLD );
vec2 sizeScaled = vec2( sX, sY ) * occlusionAlpha * nodeScale;
vec2 size = mix( sizeScaled * worldSizeScale, sizeScaled * camDist * 0.1 * screenSizeScale, worldSize_vs_screenSize );
float randomScale = mix( randomScaleMin, randomScaleMax, random( vec2( normalizedIndex ) ) );
size *= randomScale;
setFlareBillboard(
MODELVIEW_MATRIX, MODELVIEW_NORMAL_MATRIX,
VIEW_MATRIX, MAIN_CAM_INV_VIEW_MATRIX, MODEL_MATRIX,
vec3( size.x, size.y, 1.0 ), screenOffsetScale + screenOffsetLayerSpread * ( normalizedIndex * 2.0 - 1.0 )
);
vec3 hsl = RGBtoHSL( color.rgb );
vec3 shiftedHSL = shiftHSL( hsl, centerHSL.rgb, 60.0 );
vec3 shiftedRGB = HSLtoRGB( shiftedHSL );
combinedColor = color;
float rgbScale = getRGBScale( combinedColor.rgb );
float randomHueOffset = mix( minHueRandom, maxHueRandom, random( vec2( normalizedIndex ) + vec2( 0.23, 0.13 ) ) );
combinedColor.rgb = changeHueOfRGB( combinedColor.rgb / rgbScale, randomHueOffset ) * rgbScale;
rgbScale = getRGBScale( combinedColor.rgb );
centerColor = vec4( shiftRGBwithHSL( combinedColor.rgb / rgbScale, centerHSL.rgb, 60.0 ) * rgbScale, centerHSL.a * color.a );
outsideColor = vec4( shiftRGBwithHSL( combinedColor.rgb / rgbScale, outsideHSL.rgb, 60.0 ) * rgbScale, outsideHSL.a * color.a );
opacityFadeValue = fadeValue * opacityValue;
float opacityMapValue = textureLod( opacityCurve, vec2( normalizedIndex, 0.0 ), 0.0 ).r;
opacityFadeValue *= opacityMapValue;
}
void fragment()
{
// float distanceToCircle = 1.0 - min( 1, length( UV - vec2( 0.5, 0.5 ) ) / 0.5 );
// float normalizedDistance = normalizeToRange01( distance, _minShapeDistance, _maxShapeDistance );
// return 1.0 - normalizedDistance;
float distance = getShapeDistance( shapeType, shapeScale, -shapeRotation, UV, minShapeDistance, maxShapeDistance );
float normalizedAlphaDistance = normalizeToRange01( distance, minShapeDistance, maxShapeDistance );
float alphaT = 1.0 - normalizedAlphaDistance;
float normalizedColorDistance = normalizeToRange01( distance, minShapeDistanceColor, maxShapeDistanceColor );
float colorT = 1.0 - normalizedColorDistance;
colorT = pow( colorT, colorDistortion );
alphaT = pow( alphaT, alphaDistortion );
float t = min( 1, colorT );
vec4 mixedColor = mixThreeColors( outsideColor, combinedColor, centerColor, t );
// mixedColor = outsideColor;
mixedColor.a *= alphaT;
ALBEDO = mixedColor.rgb;
ALPHA = mixedColor.a * occlusionAlpha * opacity * opacityFadeValue;
}

View File

@ -1 +0,0 @@
uid://yy2pi2u1bg4n

View File

@ -1,135 +0,0 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class ShapeFlareMixShader
{
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/ShapeFlare/ShapeFlareMix.gdshader"
);
public static readonly IntPropertyName shapeType = IntPropertyName.Create( "shapeType" );
public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
public static readonly FloatPropertyName shapeRotation = FloatPropertyName.Create( "shapeRotation" );
public static readonly FloatPropertyName minShapeDistance = FloatPropertyName.Create( "minShapeDistance" );
public static readonly FloatPropertyName maxShapeDistance = FloatPropertyName.Create( "maxShapeDistance" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName colorDistortion = FloatPropertyName.Create( "colorDistortion" );
public static readonly FloatPropertyName alphaDistortion = FloatPropertyName.Create( "alphaDistortion" );
public static readonly Vector4PropertyName centerHsl = Vector4PropertyName.Create( "centerHSL" );
public static readonly Vector4PropertyName outsideHsl = Vector4PropertyName.Create( "outsideHSL" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName minShapeDistanceColor = FloatPropertyName.Create( "minShapeDistanceColor" );
public static readonly FloatPropertyName maxShapeDistanceColor = FloatPropertyName.Create( "maxShapeDistanceColor" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly BoolPropertyName useQuickOcclusionTest = BoolPropertyName.Create( "useQuickOcclusionTest" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
}
[Tool]
public partial class ShapeFlareMixMaterial:CustomMaterial
{
public readonly CustomMaterialProperty<int> shapeType;
public readonly CustomMaterialProperty<float> shapeScale;
public readonly CustomMaterialProperty<float> shapeRotation;
public readonly CustomMaterialProperty<float> minShapeDistance;
public readonly CustomMaterialProperty<float> maxShapeDistance;
public readonly CustomMaterialProperty<Color> color;
public readonly CustomMaterialProperty<float> opacity;
public readonly CustomMaterialProperty<Texture2D> opacityCurve;
public readonly CustomMaterialProperty<float> colorDistortion;
public readonly CustomMaterialProperty<float> alphaDistortion;
public readonly CustomMaterialProperty<Vector4> centerHsl;
public readonly CustomMaterialProperty<Vector4> outsideHsl;
public readonly CustomMaterialProperty<float> minHueRandom;
public readonly CustomMaterialProperty<float> maxHueRandom;
public readonly CustomMaterialProperty<float> minShapeDistanceColor;
public readonly CustomMaterialProperty<float> maxShapeDistanceColor;
public readonly CustomMaterialProperty<float> sizeX;
public readonly CustomMaterialProperty<float> sizeY;
public readonly CustomMaterialProperty<float> worldSizeScale;
public readonly CustomMaterialProperty<float> screenSizeScale;
public readonly CustomMaterialProperty<float> worldSizeVsScreenSize;
public readonly CustomMaterialProperty<float> randomScaleMin;
public readonly CustomMaterialProperty<float> randomScaleMax;
public readonly CustomMaterialProperty<Vector2> screenOffsetScale;
public readonly CustomMaterialProperty<Vector2> screenOffsetLayerSpread;
public readonly CustomMaterialProperty<Texture2D> fading;
public readonly CustomMaterialProperty<Texture2D> opacityFading;
public readonly CustomMaterialProperty<Texture2D> sizeXfading;
public readonly CustomMaterialProperty<Texture2D> sizeYfading;
public readonly CustomMaterialProperty<bool> useQuickOcclusionTest;
public readonly CustomMaterialProperty<float> occlusionZOffset;
public readonly CustomMaterialProperty<int> occlusionTestMaxSteps;
public readonly CustomMaterialProperty<float> occlusionTestStepStride;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingScaleAmount;
public readonly CustomMaterialProperty<float> occlusionTestViewDependingDistance;
public ShapeFlareMixMaterial()
{
Shader = ShapeFlareMixShader.shader.Get();
shapeType = new CustomMaterialProperty<int>( this, ShapeFlareMixShader.shapeType );
shapeScale = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.shapeScale );
shapeRotation = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.shapeRotation );
minShapeDistance = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.minShapeDistance );
maxShapeDistance = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.maxShapeDistance );
color = new CustomMaterialProperty<Color>( this, ShapeFlareMixShader.color );
opacity = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.opacity );
opacityCurve = new CustomMaterialProperty<Texture2D>( this, ShapeFlareMixShader.opacityCurve );
colorDistortion = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.colorDistortion );
alphaDistortion = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.alphaDistortion );
centerHsl = new CustomMaterialProperty<Vector4>( this, ShapeFlareMixShader.centerHsl );
outsideHsl = new CustomMaterialProperty<Vector4>( this, ShapeFlareMixShader.outsideHsl );
minHueRandom = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.minHueRandom );
maxHueRandom = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.maxHueRandom );
minShapeDistanceColor = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.minShapeDistanceColor );
maxShapeDistanceColor = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.maxShapeDistanceColor );
sizeX = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.sizeX );
sizeY = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.sizeY );
worldSizeScale = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.worldSizeScale );
screenSizeScale = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.screenSizeScale );
worldSizeVsScreenSize = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.worldSizeVsScreenSize );
randomScaleMin = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.randomScaleMin );
randomScaleMax = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.randomScaleMax );
screenOffsetScale = new CustomMaterialProperty<Vector2>( this, ShapeFlareMixShader.screenOffsetScale );
screenOffsetLayerSpread = new CustomMaterialProperty<Vector2>( this, ShapeFlareMixShader.screenOffsetLayerSpread );
fading = new CustomMaterialProperty<Texture2D>( this, ShapeFlareMixShader.fading );
opacityFading = new CustomMaterialProperty<Texture2D>( this, ShapeFlareMixShader.opacityFading );
sizeXfading = new CustomMaterialProperty<Texture2D>( this, ShapeFlareMixShader.sizeXfading );
sizeYfading = new CustomMaterialProperty<Texture2D>( this, ShapeFlareMixShader.sizeYfading );
useQuickOcclusionTest = new CustomMaterialProperty<bool>( this, ShapeFlareMixShader.useQuickOcclusionTest );
occlusionZOffset = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.occlusionZOffset );
occlusionTestMaxSteps = new CustomMaterialProperty<int>( this, ShapeFlareMixShader.occlusionTestMaxSteps );
occlusionTestStepStride = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.occlusionTestStepStride );
occlusionTestViewDependingScaleAmount = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.occlusionTestViewDependingScaleAmount );
occlusionTestViewDependingDistance = new CustomMaterialProperty<float>( this, ShapeFlareMixShader.occlusionTestViewDependingDistance );
}
}
}

View File

@ -1 +0,0 @@
uid://chr1ackucqmih

View File

@ -0,0 +1,180 @@
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/Flares.gdshaderinc"
// SHAPE
group_uniforms Shape;
uniform float speedMultiply:hint_range(0,1) = 1;
uniform vec4 innerHSL = vec4( 0.0, 0.0, 0.0, 1.0 );
uniform vec4 outerHSL = vec4( 0.0, 0.0, 0.0, 1.0 );
uniform float colorFillRange:hint_range(0,5) = 0.5;
uniform float colorFillDistributionPower:hint_range(0.01,5) = 1.0;
varying vec4 innerColor;
varying vec4 outerColor;
group_uniforms Shape.Streaks;
uniform float streaksFrequency:hint_range(0,8) = 1.0;
uniform float streaksRotation:hint_range(0,16) = 0.0;
uniform float streaksRotationSpeed:hint_range(-1,1) = 0.0;
uniform float streaksNoise:hint_range(0,2) = 0.0;
uniform float streaksNoiseOffset:hint_range(-2,2) = 0.0;
uniform float streaksNoiseScroll:hint_range(-1,1) = 0.0;
group_uniforms;
group_uniforms Shape.Streaks2;
uniform bool streaks2enabled = false;
uniform float streaks_add_vs_mult:hint_range(0,1) = 0.0;
uniform float streaks2Multiply:hint_range(0,5) = 1.0;
uniform float streaksFrequency2:hint_range(0,8) = 0.0;
uniform float streaksRotation2:hint_range(0,16) = 0.0;
uniform float streaksRotationSpeed2:hint_range(-1,1) = 0.0;
uniform float streaksNoise2:hint_range(0,2) = 0.0;
uniform float streaksNoiseOffset2:hint_range(-2,2) = 0.0;
uniform float streaksNoiseScroll2:hint_range(-1,1) = 0.0;
group_uniforms;
group_uniforms Shape.Mask;
uniform float maskScale:hint_range(0,1) = 0.5;
uniform float maskRange:hint_range(0,2) = 0.0;
uniform float maskRangeOscillation:hint_range(0,1) = 0.1;
uniform float maskRangeOscillationSpeed:hint_range(0,1) = 0.1;
uniform float maskInnerSize:hint_range(0,2) = 1.0;
uniform float maskFrequency:hint_range(0,2) = 0.0;
uniform float maskRotation:hint_range(0,1) = 0.1;
uniform float maskRotationSpeed:hint_range(-1,1) = 0.0;
group_uniforms;
group_uniforms Shape.Blend;
uniform float blendingRange:hint_range(0,0.5) = 0.1;
group_uniforms;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/BaseFlare/BaseFlare-Variables.gdshaderinc"
#define GENERATE_FLARE_VERTEX_DATA \
{ \
float _rgbScale = getRGBScale( combinedColor ); \
innerColor = vec4( shiftRGBwithHSL( combinedColor.rgb / _rgbScale, innerHSL.rgb, 60.0) * _rgbScale, innerHSL.a * combinedColor.a ); \
outerColor = vec4( shiftRGBwithHSL( combinedColor.rgb / _rgbScale, outerHSL.rgb, 60.0) * _rgbScale, outerHSL.a * combinedColor.a ); \
} \
vec2 polarUV( vec2 _uv, float angleOffset )
{
vec2 toCenter = _uv - vec2( 0.5 );
float d = length( toCenter );
float a = atan( toCenter.y, toCenter.x );
a = ( PI + a + angleOffset + PI * 2.0 * 0.75 ) / ( 2.0 * PI );
vec2 polarUV = vec2( d, mod( a, 1.0 ) );
return polarUV;
}
float generateStreaks(
vec2 _polarUV,
vec2 _polarUV2,
float blendAmount,
float _streaksFrequency,
float _streaksRotation,
float _streaksRotationSpeed,
float _streaksNoise,
float _streaksNoiseOffset,
float _streaksNoiseScroll
)
{
vec2 textureUVScale = max( vec2( _streaksNoise, _streaksFrequency ), 0.001 );
vec2 animatedRotation = vec2( _streaksNoiseOffset + speedMultiply * TIME * _streaksNoiseScroll,
_streaksRotation + speedMultiply * TIME * _streaksRotationSpeed );
vec2 _tUV = _polarUV * textureUVScale + animatedRotation;
vec2 _tUV2 = _polarUV2 * textureUVScale + animatedRotation;
float mainLayer = perlinSeamlessWithRange( _tUV, vec2( 50.0 ) );
float fadeLayer = perlinSeamlessWithRange( _tUV2 + vec2( 0.0, -0.5 * textureUVScale.y ), vec2( 50.0 ) );
float layersMixed = mix( mainLayer, fadeLayer, blendAmount );
return layersMixed;
}
vec4 generateFlare( vec2 _uv, vec4 _color, float _opacity )
{
float offset = 0.5;
float halfBlend = blendingRange * 0.5;
vec2 _polarUV = polarUV( _uv, 0.0 );
vec2 _polarUV2 = polarUV( _uv, PI * 2.0 * offset );
float r = _polarUV.x;
float a = _polarUV.y;
float blendAmount = mod( a + ( 1.0 - halfBlend ) + halfBlend + ( 1.0 - halfBlend ), 1.0 );
if ( blendAmount > ( 1.0 - halfBlend * 2.0 ) )
{
float t = normalizeToRange01( blendAmount, 1.0, 1.0 - halfBlend * 2.0 );
blendAmount = triangle( t );
}
else
{
blendAmount = 0.0;
}
float streaks = generateStreaks( _polarUV, _polarUV2, blendAmount,
streaksFrequency, streaksRotation, streaksRotationSpeed,
streaksNoise, streaksNoiseOffset, streaksNoiseScroll
);
if ( streaks2enabled )
{
float streaks2 = streaks2Multiply * generateStreaks( _polarUV, _polarUV2, blendAmount,
streaksFrequency2, streaksRotation2, streaksRotationSpeed2,
streaksNoise2, streaksNoiseOffset2, streaksNoiseScroll2
);
float streaksMult = streaks * streaks2;
float streaksAdd = streaks + streaks2;
streaks = mix( streaksAdd, streaksMult, streaks_add_vs_mult );
}
float colorT = clamp( r * colorFillRange, 0.0, 1.0 );
colorT = pow( colorT, colorFillDistributionPower );
vec4 mixedColor = mixThreeColors( innerColor, _color, outerColor, colorT );
mixedColor.a *= streaks;
float animatedRotationRange = maskRange + sin( TIME * PI * 2.0 * maskRangeOscillationSpeed ) * maskRangeOscillation;
float lengthRandom = perlinSeamlessWithRange( vec2( _polarUV.y * maskFrequency + maskRotation + speedMultiply * TIME * maskRotationSpeed, 0.0 ), vec2( 50.0 ) ) * animatedRotationRange * 2.0 - animatedRotationRange;
float lengthRandom2 = perlinSeamlessWithRange( vec2( _polarUV2.y * maskFrequency + maskRotation + speedMultiply * TIME * maskRotationSpeed, 0.0 ), vec2( 50.0 ) ) * animatedRotationRange * 2.0 - animatedRotationRange;
float length = max( mix( lengthRandom, lengthRandom2, blendAmount ) + maskInnerSize, 0.001 );
float streak = smoothstep( length * maskScale, 0.0, r );
mixedColor.a *= streak;
// mixedColor *= _color;
mixedColor.a *= _opacity;
return mixedColor;
}
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/BaseFlare/BaseFlare-VertexFragment.gdshaderinc"

View File

@ -0,0 +1 @@
uid://8ctaenaswit7

View File

@ -1,4 +1,4 @@
shader_type spatial;
render_mode blend_add, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/ShapeFlare/ShapeFlareBase.gdshaderinc"
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/StarType/StarTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://d3ua8bynj1b8m

View File

@ -0,0 +1,168 @@
using Godot;
namespace Rokojori
{
// Generated by ShaderClassGenerator
public class StarTypeFlareAddShader
{
///*
public static readonly CachedResource<Shader> shader = new CachedResource<Shader>(
"res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/StarType/Variants/StarTypeFlareAdd.gdshader"
);
//*/
public static readonly FloatPropertyName speedMultiply = FloatPropertyName.Create( "speedMultiply" );
public static readonly Vector4PropertyName innerHsl = Vector4PropertyName.Create( "innerHSL" );
public static readonly Vector4PropertyName outerHsl = Vector4PropertyName.Create( "outerHSL" );
public static readonly FloatPropertyName colorFillRange = FloatPropertyName.Create( "colorFillRange" );
public static readonly FloatPropertyName colorFillDistributionPower = FloatPropertyName.Create( "colorFillDistributionPower" );
public static readonly FloatPropertyName streaksFrequency = FloatPropertyName.Create( "streaksFrequency" );
public static readonly FloatPropertyName streaksRotation = FloatPropertyName.Create( "streaksRotation" );
public static readonly FloatPropertyName streaksRotationSpeed = FloatPropertyName.Create( "streaksRotationSpeed" );
public static readonly FloatPropertyName streaksNoise = FloatPropertyName.Create( "streaksNoise" );
public static readonly FloatPropertyName streaksNoiseOffset = FloatPropertyName.Create( "streaksNoiseOffset" );
public static readonly FloatPropertyName streaksNoiseScroll = FloatPropertyName.Create( "streaksNoiseScroll" );
public static readonly BoolPropertyName streaks2Enabled = BoolPropertyName.Create( "streaks2enabled" );
public static readonly FloatPropertyName streaksAddVsMult = FloatPropertyName.Create( "streaks_add_vs_mult" );
public static readonly FloatPropertyName streaks2Multiply = FloatPropertyName.Create( "streaks2Multiply" );
public static readonly FloatPropertyName streaksFrequency2 = FloatPropertyName.Create( "streaksFrequency2" );
public static readonly FloatPropertyName streaksRotation2 = FloatPropertyName.Create( "streaksRotation2" );
public static readonly FloatPropertyName streaksRotationSpeed2 = FloatPropertyName.Create( "streaksRotationSpeed2" );
public static readonly FloatPropertyName streaksNoise2 = FloatPropertyName.Create( "streaksNoise2" );
public static readonly FloatPropertyName streaksNoiseOffset2 = FloatPropertyName.Create( "streaksNoiseOffset2" );
public static readonly FloatPropertyName streaksNoiseScroll2 = FloatPropertyName.Create( "streaksNoiseScroll2" );
public static readonly FloatPropertyName maskScale = FloatPropertyName.Create( "maskScale" );
public static readonly FloatPropertyName maskRange = FloatPropertyName.Create( "maskRange" );
public static readonly FloatPropertyName maskRangeOscillation = FloatPropertyName.Create( "maskRangeOscillation" );
public static readonly FloatPropertyName maskRangeOscillationSpeed = FloatPropertyName.Create( "maskRangeOscillationSpeed" );
public static readonly FloatPropertyName maskInnerSize = FloatPropertyName.Create( "maskInnerSize" );
public static readonly FloatPropertyName maskFrequency = FloatPropertyName.Create( "maskFrequency" );
public static readonly FloatPropertyName maskRotation = FloatPropertyName.Create( "maskRotation" );
public static readonly FloatPropertyName maskRotationSpeed = FloatPropertyName.Create( "maskRotationSpeed" );
public static readonly FloatPropertyName blendingRange = FloatPropertyName.Create( "blendingRange" );
public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );
}
[Tool]
public partial class StarTypeFlareAddMaterial:BaseFlareMaterial
{
public readonly CustomMaterialProperty<float> speedMultiply;
public readonly CustomMaterialProperty<Vector4> innerHsl;
public readonly CustomMaterialProperty<Vector4> outerHsl;
public readonly CustomMaterialProperty<float> colorFillRange;
public readonly CustomMaterialProperty<float> colorFillDistributionPower;
public readonly CustomMaterialProperty<float> streaksFrequency;
public readonly CustomMaterialProperty<float> streaksRotation;
public readonly CustomMaterialProperty<float> streaksRotationSpeed;
public readonly CustomMaterialProperty<float> streaksNoise;
public readonly CustomMaterialProperty<float> streaksNoiseOffset;
public readonly CustomMaterialProperty<float> streaksNoiseScroll;
public readonly CustomMaterialProperty<bool> streaks2Enabled;
public readonly CustomMaterialProperty<float> streaksAddVsMult;
public readonly CustomMaterialProperty<float> streaks2Multiply;
public readonly CustomMaterialProperty<float> streaksFrequency2;
public readonly CustomMaterialProperty<float> streaksRotation2;
public readonly CustomMaterialProperty<float> streaksRotationSpeed2;
public readonly CustomMaterialProperty<float> streaksNoise2;
public readonly CustomMaterialProperty<float> streaksNoiseOffset2;
public readonly CustomMaterialProperty<float> streaksNoiseScroll2;
public readonly CustomMaterialProperty<float> maskScale;
public readonly CustomMaterialProperty<float> maskRange;
public readonly CustomMaterialProperty<float> maskRangeOscillation;
public readonly CustomMaterialProperty<float> maskRangeOscillationSpeed;
public readonly CustomMaterialProperty<float> maskInnerSize;
public readonly CustomMaterialProperty<float> maskFrequency;
public readonly CustomMaterialProperty<float> maskRotation;
public readonly CustomMaterialProperty<float> maskRotationSpeed;
public readonly CustomMaterialProperty<float> blendingRange;
public StarTypeFlareAddMaterial()
{
///*
Shader = StarTypeFlareAddShader.shader.Get();
//*/
speedMultiply = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.speedMultiply );
innerHsl = new CustomMaterialProperty<Vector4>( this, StarTypeFlareAddShader.innerHsl );
outerHsl = new CustomMaterialProperty<Vector4>( this, StarTypeFlareAddShader.outerHsl );
colorFillRange = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.colorFillRange );
colorFillDistributionPower = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.colorFillDistributionPower );
streaksFrequency = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksFrequency );
streaksRotation = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksRotation );
streaksRotationSpeed = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksRotationSpeed );
streaksNoise = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksNoise );
streaksNoiseOffset = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksNoiseOffset );
streaksNoiseScroll = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksNoiseScroll );
streaks2Enabled = new CustomMaterialProperty<bool>( this, StarTypeFlareAddShader.streaks2Enabled );
streaksAddVsMult = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksAddVsMult );
streaks2Multiply = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaks2Multiply );
streaksFrequency2 = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksFrequency2 );
streaksRotation2 = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksRotation2 );
streaksRotationSpeed2 = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksRotationSpeed2 );
streaksNoise2 = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksNoise2 );
streaksNoiseOffset2 = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksNoiseOffset2 );
streaksNoiseScroll2 = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.streaksNoiseScroll2 );
maskScale = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.maskScale );
maskRange = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.maskRange );
maskRangeOscillation = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.maskRangeOscillation );
maskRangeOscillationSpeed = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.maskRangeOscillationSpeed );
maskInnerSize = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.maskInnerSize );
maskFrequency = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.maskFrequency );
maskRotation = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.maskRotation );
maskRotationSpeed = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.maskRotationSpeed );
blendingRange = new CustomMaterialProperty<float>( this, StarTypeFlareAddShader.blendingRange );
}
}
}

View File

@ -0,0 +1 @@
uid://dsip3doyfw03i

View File

@ -1,4 +1,4 @@
shader_type spatial;
render_mode blend_mix, depth_test_disabled, cull_disabled, unshaded, fog_disabled;
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/ShapeFlare/ShapeFlareBase.gdshaderinc"
#include "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/StarType/StarTypeFlare.gdshaderinc"

View File

@ -0,0 +1 @@
uid://dijnka3rbg2s0

Some files were not shown because too many files have changed in this diff Show More