Files
Arban_pos_build/build/assets/shaders/fire.frag
2026-08-25 18:20:26 +05:30

46 lines
4.9 KiB
JavaScript

{
"format_version": 2,
"sksl": {
"entrypoint": "fire_fragment_main",
"shader": "// This SkSL shader is autogenerated by spirv-cross.\n\nfloat4 flutter_FragCoord;\n\nuniform vec2 uSize;\nuniform float uTime;\nuniform float uIntensity;\nuniform float uSeed;\n\nvec4 fragColor;\n\nvec2 FLT_flutter_local_FlutterFragCoord()\n{\n return flutter_FragCoord.xy;\n}\n\nfloat FLT_flutter_local_hash(vec2 p)\n{\n return fract(sin(dot(p, vec2(127.09999847412109375, 311.70001220703125))) * 43758.546875);\n}\n\nfloat FLT_flutter_local_noise(vec2 p)\n{\n vec2 i = floor(p);\n vec2 f = fract(p);\n vec2 u = (f * f) * (vec2(3.0) - (f * 2.0));\n vec2 param = i;\n float a = FLT_flutter_local_hash(param);\n vec2 param_1 = i + vec2(1.0, 0.0);\n float b = FLT_flutter_local_hash(param_1);\n vec2 param_2 = i + vec2(0.0, 1.0);\n float c = FLT_flutter_local_hash(param_2);\n vec2 param_3 = i + vec2(1.0);\n float d = FLT_flutter_local_hash(param_3);\n return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);\n}\n\nfloat FLT_flutter_local_fbm(inout vec2 p)\n{\n float value = 0.0;\n float amplitude = 0.5;\n for (int i = 0; i < 5; i++)\n {\n vec2 param = p;\n value += (amplitude * FLT_flutter_local_noise(param));\n p = (p * 2.0299999713897705078125) + vec2(17.299999237060546875, 9.1000003814697265625);\n amplitude *= 0.5;\n }\n return value;\n}\n\nvoid FLT_main()\n{\n vec2 uv = FLT_flutter_local_FlutterFragCoord() / uSize;\n float y = 1.0 - uv.y;\n vec2 q = vec2(uv.x * 3.400000095367431640625, (y * 1.7000000476837158203125) - (uTime * 1.14999997615814208984375)) + vec2(uSeed * 13.69999980926513671875);\n vec2 param_1 = q + vec2(0.0, (-uTime) * 0.550000011920928955078125);\n float _180 = FLT_flutter_local_fbm(param_1);\n vec2 param_2 = q + vec2(5.19999980926513671875, (-uTime) * 0.85000002384185791015625);\n float _190 = FLT_flutter_local_fbm(param_2);\n vec2 warp = vec2(_180, _190);\n vec2 param_3 = q + (warp * 0.949999988079071044921875);\n float _199 = FLT_flutter_local_fbm(param_3);\n float density = _199;\n float breath = 0.86000001430511474609375 + (0.180000007152557373046875 * sin((uTime * 1.309999942779541015625) + (uSeed * 4.0)));\n float reach = ((density * 1.14999997615814208984375) * breath) * uIntensity;\n float across = smoothstep(0.0, 0.2199999988079071044921875, uv.x) * smoothstep(1.0, 0.7799999713897705078125, uv.x);\n reach *= mix(0.550000011920928955078125, 1.0, across);\n float heat = clamp((reach - y) * 1.89999997615814208984375, 0.0, 1.0);\n if (heat <= 0.001000000047497451305389404296875)\n {\n fragColor = vec4(0.0);\n return;\n }\n vec3 colour = mix(vec3(0.4199999868869781494140625, 0.02999999932944774627685546875, 0.004999999888241291046142578125), vec3(0.949999988079071044921875, 0.2199999988079071044921875, 0.0199999995529651641845703125), vec3(smoothstep(0.0500000007450580596923828125, 0.3499999940395355224609375, heat)));\n colour = mix(colour, vec3(1.0, 0.550000011920928955078125, 0.0599999986588954925537109375), vec3(smoothstep(0.300000011920928955078125, 0.62000000476837158203125, heat)));\n colour = mix(colour, vec3(1.0, 0.86000001430511474609375, 0.3499999940395355224609375), vec3(smoothstep(0.60000002384185791015625, 0.86000001430511474609375, heat)));\n colour = mix(colour, vec3(1.0, 0.9700000286102294921875, 0.86000001430511474609375), vec3(smoothstep(0.87000000476837158203125, 1.0, heat)));\n vec2 param_4 = vec2(uv.x * 46.0, (y * 26.0) - (uTime * 3.099999904632568359375)) + vec2(uSeed * 31.0);\n float spark = FLT_flutter_local_noise(param_4);\n spark = smoothstep(0.964999973773956298828125, 1.0, spark) * smoothstep(1.14999997615814208984375, 0.25, y);\n colour += ((vec3(1.0, 0.7200000286102294921875, 0.2800000011920928955078125) * spark) * 2.0);\n float alpha = smoothstep(0.0, 0.2199999988079071044921875, heat) * uIntensity;\n alpha = clamp(alpha + (spark * 1.39999997615814208984375), 0.0, 1.0);\n fragColor = vec4(colour * alpha, alpha);\n}\n\nhalf4 main(float2 iFragCoord)\n{\n flutter_FragCoord = float4(iFragCoord, 0, 0);\n FLT_main();\n return fragColor;\n}\n",
"stage": 1,
"uniforms": [
{
"array_elements": 0,
"bit_width": 32,
"columns": 1,
"location": 0,
"name": "uSize",
"rows": 2,
"type": 10
},
{
"array_elements": 0,
"bit_width": 32,
"columns": 1,
"location": 1,
"name": "uTime",
"rows": 1,
"type": 10
},
{
"array_elements": 0,
"bit_width": 32,
"columns": 1,
"location": 2,
"name": "uIntensity",
"rows": 1,
"type": 10
},
{
"array_elements": 0,
"bit_width": 32,
"columns": 1,
"location": 3,
"name": "uSeed",
"rows": 1,
"type": 10
}
]
}
}