@galacean/engine-shader 2.0.0-alpha.33 → 2.0.0-alpha.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +13 -7
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js +13 -7
- package/dist/main.js.map +1 -1
- package/dist/module.js +13 -7
- package/dist/module.js.map +1 -1
- package/dist/sources.main.js +10 -4
- package/dist/sources.main.js.map +1 -1
- package/dist/sources.module.js +10 -4
- package/dist/sources.module.js.map +1 -1
- package/package.json +2 -2
package/dist/sources.module.js
CHANGED
|
@@ -12,7 +12,7 @@ var Common_Fog = "#ifndef FOG_INCLUDED\n#define FOG_INCLUDED\n\n#if SCENE_FOG_MO
|
|
|
12
12
|
|
|
13
13
|
var Common_Normal = "#ifndef NORMAL_INCLUDED\n#define NORMAL_INCLUDED\n\n\nvec3 getNormalByNormalTexture(mat3 tbn, sampler2D normalTexture, float normalIntensity, vec2 uv, bool isFrontFacing){\n vec3 normal = (texture2D(normalTexture, uv)).rgb;\n normal = normalize(tbn * ((2.0 * normal - 1.0) * vec3(normalIntensity, normalIntensity, 1.0)));\n normal *= float( isFrontFacing ) * 2.0 - 1.0;\n\n return normal;\n}\n\nmat3 getTBNByDerivatives(vec2 uv, vec3 normal, vec3 position, bool isFrontFacing){\n #ifdef HAS_DERIVATIVES\n uv = isFrontFacing? uv: -uv;\n // ref: http://www.thetenthplanet.de/archives/1180\n // get edge vectors of the pixel triangle\n\t vec3 dp1 = dFdx(position);\n\t vec3 dp2 = dFdy(position);\n\t vec2 duv1 = dFdx(uv);\n\t vec2 duv2 = dFdy(uv);\n\t // solve the linear system\n\t vec3 dp2perp = cross(dp2, normal);\n\t vec3 dp1perp = cross(normal, dp1);\n\t vec3 tangent = dp2perp * duv1.x + dp1perp * duv2.x;\n\t vec3 bitangent = dp2perp * duv1.y + dp1perp * duv2.y;\n\t // construct a scale-invariant frame \n float denom = max( dot(tangent, tangent), dot(bitangent, bitangent) );\n float invmax = (denom == 0.0) ? 0.0 : camera_ProjectionParams.x / sqrt( denom );\n\t return mat3(tangent * invmax, bitangent * invmax, normal);\n #else\n return mat3(vec3(0.0), vec3(0.0), normal);\n #endif\n}\n\n\n#endif";
|
|
14
14
|
|
|
15
|
-
var Common_Transform = "#ifndef TRANSFORM_INCLUDED\n#define TRANSFORM_INCLUDED\n\nmat4
|
|
15
|
+
var Common_Transform = "#ifndef TRANSFORM_INCLUDED\n#define TRANSFORM_INCLUDED\n\nmat4 camera_ViewMat;\nmat4 camera_ProjMat;\nmat4 camera_VPMat;\n\nvec3 camera_Position;\nvec3 camera_Forward;\n\nmat4 renderer_ModelMat;\nmat4 renderer_MVMat;\nmat4 renderer_MVPMat;\nmat4 renderer_NormalMat;\n\n#endif\n";
|
|
16
16
|
|
|
17
17
|
var Lighting_AmbientOcclusion_BilateralBlur = "#ifndef BILATERAL_BLUR_INCLUDED\n#define BILATERAL_BLUR_INCLUDED\n\n#include \"ShaderLibrary/Common/Common.glsl\"\n\nsampler2D renderer_BlitTexture;\nvec4 renderer_SourceScaleOffset;\nfloat material_farPlaneOverEdgeDistance;\n\n#if SSAO_QUALITY == 0\n #define BLUR_SAMPLE_COUNT 3\n#elif SSAO_QUALITY == 1\n #define BLUR_SAMPLE_COUNT 6\n#elif SSAO_QUALITY == 2\n #define BLUR_SAMPLE_COUNT 12\n#endif\n\nfloat material_kernel[12];\n\nfloat bilateralWeight(float depth, float sampleDepth) {\n float diff = (sampleDepth - depth) * material_farPlaneOverEdgeDistance;\n return max(0.0, 1.0 - diff * diff);\n}\n\nhighp float unpack(highp vec2 depth) {\n return (depth.x * (256.0 / 257.0) + depth.y * (1.0 / 257.0));\n}\n\nvoid tap(const sampler2D saoTexture,\n inout float sum, inout float totalWeight, float weight, float depth, vec2 position) {\n vec4 data = texture2D(saoTexture, position);\n float bilateral = weight * bilateralWeight(depth, unpack(data.gb));\n sum += data.r * bilateral;\n totalWeight += bilateral;\n}\n\nvoid frag(Varyings v) {\n mediump vec4 data = texture2D(renderer_BlitTexture, v.v_uv);\n float depth = unpack(data.gb);\n\n float totalWeight = material_kernel[0];\n float sum = data.r * totalWeight;\n\n vec2 offset = renderer_SourceScaleOffset.zw;\n for (int i = 1; i < BLUR_SAMPLE_COUNT; i++) {\n float weight = material_kernel[i];\n tap(renderer_BlitTexture, sum, totalWeight, weight, depth, v.v_uv + offset);\n tap(renderer_BlitTexture, sum, totalWeight, weight, depth, v.v_uv - offset);\n offset += renderer_SourceScaleOffset.zw;\n }\n\n float ao = sum * (1.0 / totalWeight);\n\n ao += ((interleavedGradientNoise(gl_FragCoord.xy) - 0.5) / 255.0);\n gl_FragColor = vec4(ao, data.gb, 1.0);\n}\n\n#endif\n";
|
|
18
18
|
|
|
@@ -42,7 +42,7 @@ var PBR_Refraction = "#ifndef REFRACTION_INCLUDED\n#define REFRACTION_INCLUDED\n
|
|
|
42
42
|
|
|
43
43
|
var PBR_VaryingsPBR = "#ifndef VARYINGS_PBR_INCLUDED\n#define VARYINGS_PBR_INCLUDED\n\nstruct Varyings{\n\tvec2 uv;\n\t#ifdef RENDERER_HAS_UV1\n\t vec2 uv1;\n\t#endif\n\n\t#ifdef RENDERER_ENABLE_VERTEXCOLOR\n \t\tvec4 vertexColor;\n\t#endif\n\n\tvec3 positionWS;\n\n\t#if SCENE_FOG_MODE != 0\n\t vec3 positionVS;\n\t#endif\n\n\t#ifdef RENDERER_HAS_NORMAL\n\t vec3 normalWS;\n\t #ifdef NEED_VERTEX_TANGENT\n\t\t\tvec3 tangentWS;\n\t\t\tvec3 bitangentWS;\n\t #endif\n\t#endif\n\n\n\t#if defined(NEED_CALCULATE_SHADOWS) && (SCENE_SHADOW_CASCADED_COUNT == 1)\n\t vec3 shadowCoord;\n\t#endif\n\n vec4 positionCS;\n};\n\n\n#endif";
|
|
44
44
|
|
|
45
|
-
var PBR_VertexPBR = "#ifndef VERTEX_INCLUDE\n#define VERTEX_INCLUDE\n\nstruct VertexInputs{\n vec4 positionOS;\n vec3 positionWS;\n\n #if SCENE_FOG_MODE != 0\n vec3 positionVS;\n #endif\n\n #ifdef RENDERER_HAS_NORMAL\n vec3 normalWS;\n #ifdef NEED_VERTEX_TANGENT\n vec3 tangentWS;\n vec3 bitangentWS;\n #endif\n #endif\n};\n\nvec4 material_TilingOffset;\nvec2 getUV0(Attributes attributes){\n vec2 uv0 = vec2(0);\n\n #ifdef RENDERER_HAS_UV\n uv0 = attributes.TEXCOORD_0;\n #endif\n\n return uv0 * material_TilingOffset.xy + material_TilingOffset.zw;\n}\n\nVertexInputs getVertexInputs(Attributes attributes){\n VertexInputs inputs;\n vec4 position = vec4(attributes.POSITION, 1.0);\n\n // tangent must follow RENDERER_HAS_TANGENT here so the call site stays in\n // sync with calculateBlendShape's signature (which is gated on the same\n // mesh-attribute macro). Downstream worldspace projection + varying writes\n // are separately gated on NEED_VERTEX_TANGENT below.\n #ifdef RENDERER_HAS_NORMAL\n vec3 normal = vec3( attributes.NORMAL );\n #ifdef RENDERER_HAS_TANGENT\n vec4 tangent = vec4( attributes.TANGENT );\n #endif\n #endif\n\n\n // BlendShape\n #ifdef RENDERER_HAS_BLENDSHAPE\n calculateBlendShape(attributes, position\n #ifdef RENDERER_HAS_NORMAL\n ,normal\n #ifdef RENDERER_HAS_TANGENT\n ,tangent\n #endif\n #endif\n );\n #endif\n\n // Skin\n #ifdef RENDERER_HAS_SKIN\n mat4 skinMatrix = getSkinMatrix(attributes);\n position = skinMatrix * position;\n\n #if defined(RENDERER_HAS_NORMAL) && !defined(MATERIAL_OMIT_NORMAL)\n mat3 skinNormalMatrix = INVERSE_MAT(mat3(skinMatrix));\n normal = normal * skinNormalMatrix;\n #ifdef NEED_VERTEX_TANGENT\n tangent.xyz = tangent.xyz * skinNormalMatrix;\n #endif\n #endif\n #endif\n\n // TBN world space\n #if defined(RENDERER_HAS_NORMAL) && !defined(MATERIAL_OMIT_NORMAL)\n inputs.normalWS = normalize(
|
|
45
|
+
var PBR_VertexPBR = "#ifndef VERTEX_INCLUDE\n#define VERTEX_INCLUDE\n\nstruct VertexInputs{\n vec4 positionOS;\n vec3 positionWS;\n\n #if SCENE_FOG_MODE != 0\n vec3 positionVS;\n #endif\n\n #ifdef RENDERER_HAS_NORMAL\n vec3 normalWS;\n #ifdef NEED_VERTEX_TANGENT\n vec3 tangentWS;\n vec3 bitangentWS;\n #endif\n #endif\n};\n\nvec4 material_TilingOffset;\nvec2 getUV0(Attributes attributes){\n vec2 uv0 = vec2(0);\n\n #ifdef RENDERER_HAS_UV\n uv0 = attributes.TEXCOORD_0;\n #endif\n\n return uv0 * material_TilingOffset.xy + material_TilingOffset.zw;\n}\n\nVertexInputs getVertexInputs(Attributes attributes){\n VertexInputs inputs;\n vec4 position = vec4(attributes.POSITION, 1.0);\n\n // tangent must follow RENDERER_HAS_TANGENT here so the call site stays in\n // sync with calculateBlendShape's signature (which is gated on the same\n // mesh-attribute macro). Downstream worldspace projection + varying writes\n // are separately gated on NEED_VERTEX_TANGENT below.\n #ifdef RENDERER_HAS_NORMAL\n vec3 normal = vec3( attributes.NORMAL );\n #ifdef RENDERER_HAS_TANGENT\n vec4 tangent = vec4( attributes.TANGENT );\n #endif\n #endif\n\n\n // BlendShape\n #ifdef RENDERER_HAS_BLENDSHAPE\n calculateBlendShape(attributes, position\n #ifdef RENDERER_HAS_NORMAL\n ,normal\n #ifdef RENDERER_HAS_TANGENT\n ,tangent\n #endif\n #endif\n );\n #endif\n\n // Skin\n #ifdef RENDERER_HAS_SKIN\n mat4 skinMatrix = getSkinMatrix(attributes);\n position = skinMatrix * position;\n\n #if defined(RENDERER_HAS_NORMAL) && !defined(MATERIAL_OMIT_NORMAL)\n mat3 skinNormalMatrix = INVERSE_MAT(mat3(skinMatrix));\n normal = normal * skinNormalMatrix;\n #ifdef NEED_VERTEX_TANGENT\n tangent.xyz = tangent.xyz * skinNormalMatrix;\n #endif\n #endif\n #endif\n\n // TBN world space\n #if defined(RENDERER_HAS_NORMAL) && !defined(MATERIAL_OMIT_NORMAL)\n mat3 normalMat = mat3(renderer_NormalMat);\n inputs.normalWS = normalize( normalMat * normal );\n\n #ifdef NEED_VERTEX_TANGENT\n vec3 tangentWS = normalize( normalMat * tangent.xyz );\n vec3 bitangentWS = cross( inputs.normalWS, tangentWS ) * tangent.w;\n\n inputs.tangentWS = tangentWS;\n inputs.bitangentWS = bitangentWS;\n #endif\n #endif\n\n\n inputs.positionOS = position;\n vec4 positionWS = renderer_ModelMat * position;\n inputs.positionWS = positionWS.xyz / positionWS.w;\n\n #if SCENE_FOG_MODE != 0\n vec4 positionVS = renderer_MVMat * position;\n inputs.positionVS = positionVS.xyz / positionVS.w;\n #endif\n\n return inputs;\n}\n\n#endif";
|
|
46
46
|
|
|
47
47
|
var Particle_Billboard_HorizontalBillboard = "#ifndef HORIZONTAL_BILLBOARD_INCLUDED\n#define HORIZONTAL_BILLBOARD_INCLUDED\n\n#ifdef RENDERER_MODE_HORIZONTAL_BILLBOARD\n\tvec2 corner = a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n\tconst vec3 sideVector = vec3(1.0, 0.0, 0.0);\n\tconst vec3 upVector = vec3(0.0, 0.0, -1.0);\n\tcorner *= computeParticleSizeBillboard(a_StartSize.xy, normalizedAge);\n\n\t// HorizontalBillboard rotates in XZ plane (around Y-axis normal).\n\t// Uses Z-axis rotation data to match Unity behavior.\n\tfloat rot;\n\tif (renderer_ThreeDStartRotation) {\n\t\trot = radians(computeParticleRotationFloat(a_StartRotation0.z, age, normalizedAge));\n\t} else {\n\t\trot = radians(computeParticleRotationFloat(a_StartRotation0.x, age, normalizedAge));\n\t}\n\n\tfloat c = cos(rot);\n\tfloat s = sin(rot);\n\tmat2 rotation = mat2(c, -s, s, c);\n\tcorner = rotation * corner;\n\tcenter += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * upVector);\n#endif\n\n#endif\n";
|
|
48
48
|
|
|
@@ -60,7 +60,7 @@ var Particle_Module_LimitVelocityOverLifetime = "#ifndef LIMIT_VELOCITY_OVER_LIF
|
|
|
60
60
|
|
|
61
61
|
var Particle_Module_NoiseModule = "#ifndef NOISE_MODULE_INCLUDED\n#define NOISE_MODULE_INCLUDED\n\n#ifdef RENDERER_NOISE_MODULE_ENABLED\n\n#include \"ShaderLibrary/Noise/NoiseCommon.glsl\"\n#include \"ShaderLibrary/Noise/NoiseSimplexGrad.glsl\"\n\nvec4 renderer_NoiseParams; // xyz = strength (constant mode only), w = frequency\nvec4 renderer_NoiseOctaveParams; // x = scrollSpeed, y = octaveCount, z = octaveIntensityMultiplier, w = octaveFrequencyMultiplier\n\n#ifdef RENDERER_NOISE_STRENGTH_CURVE\n vec2 renderer_NoiseStrengthMaxCurveX[4];\n #ifdef RENDERER_NOISE_IS_SEPARATE\n vec2 renderer_NoiseStrengthMaxCurveY[4];\n vec2 renderer_NoiseStrengthMaxCurveZ[4];\n #endif\n #ifdef RENDERER_NOISE_STRENGTH_IS_RANDOM_TWO\n vec2 renderer_NoiseStrengthMinCurveX[4];\n #ifdef RENDERER_NOISE_IS_SEPARATE\n vec2 renderer_NoiseStrengthMinCurveY[4];\n vec2 renderer_NoiseStrengthMinCurveZ[4];\n #endif\n #endif\n#else\n #ifdef RENDERER_NOISE_STRENGTH_IS_RANDOM_TWO\n vec3 renderer_NoiseStrengthMinConst;\n #endif\n#endif\n\nvec3 sampleCurlNoise3D(vec3 coord) {\n float axisOffset = 100.0;\n vec3 gradX = simplexGrad(vec3(coord.z, coord.y, coord.x));\n vec3 gradY = simplexGrad(vec3(coord.x + axisOffset, coord.z, coord.y));\n vec3 gradZ = simplexGrad(vec3(coord.y, coord.x + axisOffset, coord.z));\n return vec3(\n gradZ.x - gradY.y,\n gradX.x - gradZ.y,\n gradY.x - gradX.y\n );\n}\n\nvec3 computeNoiseVelocity(Attributes attributes, vec3 currentPosition, float normalizedAge) {\n vec3 coord = currentPosition * renderer_NoiseParams.w\n + vec3(renderer_CurrentTime * renderer_NoiseOctaveParams.x);\n\n int octaveCount = int(renderer_NoiseOctaveParams.y);\n float octaveIntensityMultiplier = renderer_NoiseOctaveParams.z;\n float octaveFrequencyMultiplier = renderer_NoiseOctaveParams.w;\n\n vec3 noiseValue = sampleCurlNoise3D(coord);\n float totalAmplitude = 1.0;\n\n // Unrolled octave loop (GLSL ES 1.0 requires constant loop bounds)\n if (octaveCount >= 2) {\n float amplitude = octaveIntensityMultiplier;\n totalAmplitude += amplitude;\n noiseValue += amplitude * sampleCurlNoise3D(coord * octaveFrequencyMultiplier);\n\n if (octaveCount >= 3) {\n amplitude *= octaveIntensityMultiplier;\n totalAmplitude += amplitude;\n noiseValue += amplitude * sampleCurlNoise3D(coord * octaveFrequencyMultiplier * octaveFrequencyMultiplier);\n }\n }\n\n // Evaluate strength (supports Constant, TwoConstants, Curve, TwoCurves).\n vec3 strength;\n #ifdef RENDERER_NOISE_STRENGTH_CURVE\n float sx = evaluateParticleCurve(renderer_NoiseStrengthMaxCurveX, normalizedAge);\n #ifdef RENDERER_NOISE_STRENGTH_IS_RANDOM_TWO\n sx = mix(evaluateParticleCurve(renderer_NoiseStrengthMinCurveX, normalizedAge), sx, attributes.a_Random0.z);\n #endif\n #ifdef RENDERER_NOISE_IS_SEPARATE\n float sy = evaluateParticleCurve(renderer_NoiseStrengthMaxCurveY, normalizedAge);\n float sz = evaluateParticleCurve(renderer_NoiseStrengthMaxCurveZ, normalizedAge);\n #ifdef RENDERER_NOISE_STRENGTH_IS_RANDOM_TWO\n sy = mix(evaluateParticleCurve(renderer_NoiseStrengthMinCurveY, normalizedAge), sy, attributes.a_Random0.z);\n sz = mix(evaluateParticleCurve(renderer_NoiseStrengthMinCurveZ, normalizedAge), sz, attributes.a_Random0.z);\n #endif\n strength = vec3(sx, sy, sz);\n #else\n strength = vec3(sx);\n #endif\n #else\n strength = renderer_NoiseParams.xyz;\n #ifdef RENDERER_NOISE_STRENGTH_IS_RANDOM_TWO\n strength = mix(renderer_NoiseStrengthMinConst, strength, attributes.a_Random0.z);\n #endif\n #endif\n\n return (noiseValue / totalAmplitude) * strength;\n}\n\n#endif\n\n#endif // NOISE_MODULE_INCLUDED\n";
|
|
62
62
|
|
|
63
|
-
var Particle_Module_RotationOverLifetime = "#ifndef ROTATION_OVER_LIFETIME_INCLUDED\n#define ROTATION_OVER_LIFETIME_INCLUDED\n\n#if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n #ifdef RENDERER_ROL_CURVE_MODE\n vec2 renderer_ROLMaxCurveZ[4];\n #ifdef RENDERER_ROL_IS_SEPARATE\n vec2 renderer_ROLMaxCurveX[4];\n vec2 renderer_ROLMaxCurveY[4];\n #endif\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n vec2 renderer_ROLMinCurveZ[4];\n #ifdef RENDERER_ROL_IS_SEPARATE\n vec2 renderer_ROLMinCurveX[4];\n vec2 renderer_ROLMinCurveY[4];\n #endif\n #endif\n #else\n vec3 renderer_ROLMaxConst;\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n vec3 renderer_ROLMinConst;\n #endif\n #endif\n#endif\n\nfloat computeParticleRotationFloat(Attributes attributes, in float rotation, in float age, in float normalizedAge) {\n #if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n #ifdef RENDERER_ROL_CURVE_MODE\n float currentValue;\n float lifeRotation = evaluateParticleCurveCumulative(renderer_ROLMaxCurveZ, normalizedAge, currentValue);\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n lifeRotation = mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveZ, normalizedAge, currentValue), lifeRotation, attributes.a_Random0.w);\n #endif\n rotation += lifeRotation * attributes.a_ShapePositionStartLifeTime.w;\n #else\n float lifeRotation = renderer_ROLMaxConst.z;\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n lifeRotation = mix(renderer_ROLMinConst.z, lifeRotation, attributes.a_Random0.w);\n #endif\n rotation += lifeRotation * age;\n #endif\n #endif\n return rotation;\n}\n\n\n#if defined(RENDERER_MODE_MESH) && (defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE))\nvec3 computeParticleRotationVec3(Attributes attributes, in vec3 rotation, in float age, in float normalizedAge) {\n #ifdef RENDERER_ROL_IS_SEPARATE\n #ifdef RENDERER_ROL_CONSTANT_MODE\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n vec3 ageRot = mix(renderer_ROLMinConst, renderer_ROLMaxConst, attributes.a_Random0.w) * age;\n #else\n vec3 ageRot = renderer_ROLMaxConst * age;\n #endif\n rotation += ageRot;\n #endif\n #ifdef RENDERER_ROL_CURVE_MODE\n float currentValue;\n float lifetime = attributes.a_ShapePositionStartLifeTime.w;\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n rotation += vec3(\n mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveX, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveX, normalizedAge, currentValue), attributes.a_Random0.w),\n mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveY, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveY, normalizedAge, currentValue), attributes.a_Random0.w),\n mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveZ, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveZ, normalizedAge, currentValue), attributes.a_Random0.w)) * lifetime;\n #else\n rotation += vec3(\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveX, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveY, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveZ, normalizedAge, currentValue)) * lifetime;\n #endif\n #endif\n #else\n #ifdef RENDERER_ROL_CONSTANT_MODE\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n float ageRot = mix(renderer_ROLMinConst.z, renderer_ROLMaxConst.z, attributes.a_Random0.w) * age;\n #else\n float ageRot = renderer_ROLMaxConst.z * age;\n #endif\n rotation += ageRot;\n #endif\n\n #ifdef RENDERER_ROL_CURVE_MODE\n float currentValue;\n float lifeRotation = evaluateParticleCurveCumulative(renderer_ROLMaxCurveZ, normalizedAge, currentValue);\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n lifeRotation = mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveZ, normalizedAge, currentValue), lifeRotation, attributes.a_Random0.w);\n #endif\n rotation += lifeRotation * attributes.a_ShapePositionStartLifeTime.w;\n #endif\n #endif\n return rotation;\n}\n#endif\n\n#endif\n";
|
|
63
|
+
var Particle_Module_RotationOverLifetime = "#ifndef ROTATION_OVER_LIFETIME_INCLUDED\n#define ROTATION_OVER_LIFETIME_INCLUDED\n\n#if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n #ifdef RENDERER_ROL_CURVE_MODE\n vec2 renderer_ROLMaxCurveZ[4];\n #ifdef RENDERER_ROL_IS_SEPARATE\n vec2 renderer_ROLMaxCurveX[4];\n vec2 renderer_ROLMaxCurveY[4];\n #endif\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n vec2 renderer_ROLMinCurveZ[4];\n #ifdef RENDERER_ROL_IS_SEPARATE\n vec2 renderer_ROLMinCurveX[4];\n vec2 renderer_ROLMinCurveY[4];\n #endif\n #endif\n #else\n vec3 renderer_ROLMaxConst;\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n vec3 renderer_ROLMinConst;\n #endif\n #endif\n#endif\n\nfloat computeParticleRotationFloat(Attributes attributes, in float rotation, in float age, in float normalizedAge) {\n #if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n #ifdef RENDERER_ROL_CURVE_MODE\n float currentValue;\n float lifeRotation = evaluateParticleCurveCumulative(renderer_ROLMaxCurveZ, normalizedAge, currentValue);\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n lifeRotation = mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveZ, normalizedAge, currentValue), lifeRotation, attributes.a_Random0.w);\n #endif\n rotation += lifeRotation * attributes.a_ShapePositionStartLifeTime.w;\n #else\n float lifeRotation = renderer_ROLMaxConst.z;\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n lifeRotation = mix(renderer_ROLMinConst.z, lifeRotation, attributes.a_Random0.w);\n #endif\n rotation += lifeRotation * age;\n #endif\n #endif\n return rotation;\n}\n\n\n#if defined(RENDERER_MODE_MESH) && (defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE))\nvec3 computeParticleRotationVec3(Attributes attributes, in vec3 rotation, in float age, in float normalizedAge) {\n #ifdef RENDERER_ROL_IS_SEPARATE\n #ifdef RENDERER_ROL_CONSTANT_MODE\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n vec3 ageRot = mix(renderer_ROLMinConst, renderer_ROLMaxConst, attributes.a_Random0.w) * age;\n #else\n vec3 ageRot = renderer_ROLMaxConst * age;\n #endif\n rotation += ageRot;\n #endif\n #ifdef RENDERER_ROL_CURVE_MODE\n float currentValue;\n float lifetime = attributes.a_ShapePositionStartLifeTime.w;\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n rotation += vec3(\n mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveX, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveX, normalizedAge, currentValue), attributes.a_Random0.w),\n mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveY, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveY, normalizedAge, currentValue), attributes.a_Random0.w),\n mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveZ, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveZ, normalizedAge, currentValue), attributes.a_Random0.w)) * lifetime;\n #else\n rotation += vec3(\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveX, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveY, normalizedAge, currentValue),\n evaluateParticleCurveCumulative(renderer_ROLMaxCurveZ, normalizedAge, currentValue)) * lifetime;\n #endif\n #endif\n #else\n #ifdef RENDERER_ROL_CONSTANT_MODE\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n float ageRot = mix(renderer_ROLMinConst.z, renderer_ROLMaxConst.z, attributes.a_Random0.w) * age;\n #else\n float ageRot = renderer_ROLMaxConst.z * age;\n #endif\n rotation.z += ageRot;\n #endif\n\n #ifdef RENDERER_ROL_CURVE_MODE\n float currentValue;\n float lifeRotation = evaluateParticleCurveCumulative(renderer_ROLMaxCurveZ, normalizedAge, currentValue);\n #ifdef RENDERER_ROL_IS_RANDOM_TWO\n lifeRotation = mix(evaluateParticleCurveCumulative(renderer_ROLMinCurveZ, normalizedAge, currentValue), lifeRotation, attributes.a_Random0.w);\n #endif\n rotation.z += lifeRotation * attributes.a_ShapePositionStartLifeTime.w;\n #endif\n #endif\n return rotation;\n}\n#endif\n\n#endif\n";
|
|
64
64
|
|
|
65
65
|
var Particle_Module_SizeOverLifetime = "#ifndef SIZE_OVER_LIFETIME_INCLUDED\n#define SIZE_OVER_LIFETIME_INCLUDED\n\n#ifdef RENDERER_SOL_CURVE_MODE\n vec2 renderer_SOLMaxCurveX[4]; // x:time y:value\n #ifdef RENDERER_SOL_IS_SEPARATE\n vec2 renderer_SOLMaxCurveY[4]; // x:time y:value\n vec2 renderer_SOLMaxCurveZ[4]; // x:time y:value\n #endif\n\n #ifdef RENDERER_SOL_IS_RANDOM_TWO\n vec2 renderer_SOLMinCurveX[4]; // x:time y:value\n #ifdef RENDERER_SOL_IS_SEPARATE\n vec2 renderer_SOLMinCurveY[4]; // x:time y:value\n vec2 renderer_SOLMinCurveZ[4]; // x:time y:value\n #endif\n #endif\n#endif\n\nvec2 computeParticleSizeBillboard(Attributes attributes, in vec2 size, in float normalizedAge) {\n #ifdef RENDERER_SOL_CURVE_MODE\n float lifeSizeX = evaluateParticleCurve(renderer_SOLMaxCurveX, normalizedAge);\n #ifdef RENDERER_SOL_IS_RANDOM_TWO\n lifeSizeX = mix(evaluateParticleCurve(renderer_SOLMinCurveX, normalizedAge), lifeSizeX, attributes.a_Random0.z);\n #endif\n\n #ifdef RENDERER_SOL_IS_SEPARATE\n float lifeSizeY = evaluateParticleCurve(renderer_SOLMaxCurveY, normalizedAge);\n #ifdef RENDERER_SOL_IS_RANDOM_TWO\n lifeSizeY = mix(evaluateParticleCurve(renderer_SOLMinCurveY, normalizedAge), lifeSizeY, attributes.a_Random0.z);\n #endif\n size *= vec2(lifeSizeX, lifeSizeY);\n #else\n size *= lifeSizeX;\n #endif\n #endif\n return size;\n}\n\n#ifdef RENDERER_MODE_MESH\n vec3 computeParticleSizeMesh(Attributes attributes, in vec3 size, in float normalizedAge) {\n #ifdef RENDERER_SOL_CURVE\n size *= evaluateParticleCurve(renderer_SOLMaxCurveX, normalizedAge);\n #endif\n #ifdef RENDERER_SOL_RANDOM_CURVES\n size *= mix(evaluateParticleCurve(renderer_SOLMaxCurveX, normalizedAge),\n evaluateParticleCurve(u_SOLSizeGradientMax, normalizedAge),\n attributes.a_Random0.z);\n #endif\n #ifdef RENDERER_SOL_CURVE_SEPARATE\n size *= vec3(evaluateParticleCurve(renderer_SOLMinCurveX, normalizedAge),\n evaluateParticleCurve(renderer_SOLMinCurveY, normalizedAge),\n evaluateParticleCurve(renderer_SOLMinCurveZ, normalizedAge));\n #endif\n #ifdef RENDERER_SOL_RANDOM_CURVES_SEPARATE\n size *= vec3(mix(evaluateParticleCurve(renderer_SOLMinCurveX, normalizedAge),\n evaluateParticleCurve(renderer_SOLMaxCurveX, normalizedAge),\n attributes.a_Random0.z),\n mix(evaluateParticleCurve(renderer_SOLMinCurveY, normalizedAge),\n evaluateParticleCurve(renderer_SOLMaxCurveY, normalizedAge),\n attributes.a_Random0.z),\n mix(evaluateParticleCurve(renderer_SOLMinCurveZ, normalizedAge),\n evaluateParticleCurve(renderer_SOLMaxCurveZ, normalizedAge),\n attributes.a_Random0.z));\n #endif\n return size;\n }\n#endif\n\n#endif\n";
|
|
66
66
|
|
|
@@ -74,6 +74,8 @@ var Particle_ParticleFeedback = "#ifndef PARTICLE_FEEDBACK_INCLUDED\n#define PAR
|
|
|
74
74
|
|
|
75
75
|
var Particle_ParticleMesh = "#ifndef PARTICLE_MESH_INCLUDED\n#define PARTICLE_MESH_INCLUDED\n\n// Only support local alignment mode\n#ifdef RENDERER_MODE_MESH\n #if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n #define RENDERER_ROL_ENABLED\n #endif\n\n\tvec3 size = computeParticleSizeMesh(a_StartSize, normalizedAge);\n\n bool is3DRotation = renderer_ThreeDStartRotation;\n #if defined(RENDERER_ROL_ENABLED) && defined(RENDERER_ROL_IS_SEPARATE)\n is3DRotation = true;\n #endif\n\n if (is3DRotation) {\n #ifdef RENDERER_ROL_ENABLED\n vec3 startRotation = renderer_ThreeDStartRotation ? a_StartRotation0 : vec3(0.0, 0.0, a_StartRotation0.x);\n vec3 rotation = radians(computeParticleRotationVec3(startRotation, age, normalizedAge));\n #else\n vec3 rotation = radians(a_StartRotation0);\n #endif\n // 3D Start Rotation is same in local and world simulation space\n center += rotationByQuaternions(renderer_SizeScale * rotationByEuler(POSITION * size, rotation), worldRotation);\n } else {\n #ifdef RENDERER_ROL_ENABLED\n float angle = radians(computeParticleRotationFloat(a_StartRotation0.x, age, normalizedAge));\n #else\n float angle = radians(a_StartRotation0.x);\n #endif\n #ifdef RENDERER_EMISSION_SHAPE\n // Axis is side vector of emit position look at zero\n vec3 axis = vec3(a_ShapePositionStartLifeTime.xy, 0.0);\n if (renderer_SimulationSpace == 1){\n axis = rotationByQuaternions(axis, worldRotation);\n }\n vec3 crossResult = cross(axis, vec3(0.0, 0.0, -1.0));\n float crossLen = length(crossResult);\n vec3 rotateAxis = crossLen > 0.0001 ? crossResult / crossLen : vec3(0.0, 1.0, 0.0);\n #else\n // Axis is negative z\n vec3 rotateAxis = vec3(0.0, 0.0, -1.0);\n #endif\n center += rotationByQuaternions(renderer_SizeScale *rotationByAxis(POSITION * size, rotateAxis, angle), worldRotation);\n }\n #ifdef RENDERER_ENABLE_VERTEXCOLOR\n\t\tv_MeshColor = COLOR_0;\n\t#endif\n#endif\n\n#endif\n";
|
|
76
76
|
|
|
77
|
+
var Particle_ParticleVert = "#ifndef PARTICLE_VERT_INCLUDED\n#define PARTICLE_VERT_INCLUDED\n\n// Particle forward pass library: provides `Attributes`, `Varyings`, all engine\n// uniforms, and the reusable helpers below. The `vert` / `frag` entry points\n// live in the consuming `.shader` so they can be edited directly without\n// digging into this include.\n//\n// vec3 computeParticleCenter(Attributes attr, float age, float normalizedAge, inout Varyings v);\n// vec2 computeParticleVaryingUV(Attributes attr, float normalizedAge); // requires MATERIAL_HAS_BASETEXTURE\n// vec4 computeParticleColor(Attributes attr, vec4 startColor, float normalizedAge);\n\n#include \"ShaderLibrary/Common/Common.glsl\"\n\n// Uniforms\nfloat renderer_CurrentTime;\nvec3 renderer_Gravity;\nvec3 renderer_WorldPosition;\nvec4 renderer_WorldRotation;\nbool renderer_ThreeDStartRotation;\nint renderer_ScalingMode;\nvec3 renderer_PositionScale;\nvec3 renderer_SizeScale;\nvec3 renderer_PivotOffset;\n\nmat4 camera_ViewMat;\nmat4 camera_ProjMat;\n\n#ifdef RENDERER_MODE_STRETCHED_BILLBOARD\n vec3 camera_Position;\n#endif\nvec3 camera_Forward;\nvec3 camera_Up;\n\nfloat renderer_StretchedBillboardLengthScale;\nfloat renderer_StretchedBillboardSpeedScale;\nint renderer_SimulationSpace;\n\nvec4 material_BaseColor;\nmediump vec3 material_EmissiveColor;\n\n#ifdef MATERIAL_HAS_BASETEXTURE\n sampler2D material_BaseTexture;\n#endif\n#ifdef MATERIAL_HAS_EMISSIVETEXTURE\n sampler2D material_EmissiveTexture;\n#endif\n\nstruct Attributes {\n #if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\n vec4 a_CornerTextureCoordinate;\n #endif\n\n #ifdef RENDERER_MODE_MESH\n vec3 POSITION;\n #ifdef RENDERER_ENABLE_VERTEXCOLOR\n vec4 COLOR_0;\n #endif\n vec2 TEXCOORD_0;\n #endif\n\n vec4 a_ShapePositionStartLifeTime;\n vec4 a_DirectionTime;\n vec4 a_StartColor;\n vec3 a_StartSize;\n vec3 a_StartRotation0;\n float a_StartSpeed;\n vec4 a_Random0;\n\n #if defined(RENDERER_TSA_FRAME_RANDOM_CURVES) || defined(RENDERER_VOL_IS_RANDOM_TWO)\n vec4 a_Random1;\n #endif\n\n #if defined(RENDERER_FOL_CONSTANT_MODE) || defined(RENDERER_FOL_CURVE_MODE) || defined(RENDERER_LVL_MODULE_ENABLED)\n vec4 a_Random2;\n #endif\n\n vec3 a_SimulationWorldPosition;\n vec4 a_SimulationWorldRotation;\n\n #ifdef RENDERER_TRANSFORM_FEEDBACK\n vec3 a_FeedbackPosition;\n vec3 a_FeedbackVelocity;\n #endif\n\n #ifdef MATERIAL_HAS_BASETEXTURE\n vec4 a_SimulationUV;\n #endif\n};\n\nstruct Varyings {\n vec4 v_Color;\n #ifdef MATERIAL_HAS_BASETEXTURE\n vec2 v_TextureCoordinate;\n #endif\n #ifdef RENDERER_MODE_MESH\n vec4 v_MeshColor;\n #endif\n};\n\n// Particle module includes (must be after Attributes/Varyings declarations)\n#include \"ShaderLibrary/Particle/ParticleCommon.glsl\"\n#include \"ShaderLibrary/Particle/Module/VelocityOverLifetime.glsl\"\n#include \"ShaderLibrary/Particle/Module/ForceOverLifetime.glsl\"\n#include \"ShaderLibrary/Particle/Module/ColorOverLifetime.glsl\"\n#include \"ShaderLibrary/Particle/Module/SizeOverLifetime.glsl\"\n#include \"ShaderLibrary/Particle/Module/RotationOverLifetime.glsl\"\n#include \"ShaderLibrary/Particle/Module/TextureSheetAnimation.glsl\"\n#include \"ShaderLibrary/Particle/Module/LimitVelocityOverLifetime.glsl\"\n\nvec3 computeParticlePosition(Attributes attributes, in vec3 startVelocity, in float age, in float normalizedAge, vec3 gravityVelocity, vec4 worldRotation, inout vec3 localVelocity, inout vec3 worldVelocity) {\n vec3 startPosition = startVelocity * age;\n vec3 finalPosition;\n vec3 localPositionOffset = startPosition;\n vec3 worldPositionOffset;\n\n #ifdef _VOL_MODULE_ENABLED\n vec3 lifeVelocity;\n vec3 velocityPositionOffset = computeVelocityPositionOffset(attributes, normalizedAge, age, lifeVelocity);\n if (renderer_VOLSpace == 0) {\n localVelocity += lifeVelocity;\n localPositionOffset += velocityPositionOffset;\n } else {\n worldVelocity += lifeVelocity;\n worldPositionOffset += velocityPositionOffset;\n }\n #endif\n\n #ifdef _FOL_MODULE_ENABLED\n vec3 forceVelocity;\n vec3 forcePositionOffset = computeForcePositionOffset(attributes, normalizedAge, age, forceVelocity);\n if (renderer_FOLSpace == 0) {\n localVelocity += forceVelocity;\n localPositionOffset += forcePositionOffset;\n } else {\n worldVelocity += forceVelocity;\n worldPositionOffset += forcePositionOffset;\n }\n #endif\n\n finalPosition = rotationByQuaternions(attributes.a_ShapePositionStartLifeTime.xyz + localPositionOffset, worldRotation) + worldPositionOffset;\n\n if (renderer_SimulationSpace == 0) {\n finalPosition = finalPosition + renderer_WorldPosition;\n } else if (renderer_SimulationSpace == 1) {\n finalPosition = finalPosition + attributes.a_SimulationWorldPosition;\n }\n\n finalPosition += 0.5 * gravityVelocity * age;\n\n return finalPosition;\n}\n\n// Returns the world-space center for the particle, applying simulation,\n// billboard / mesh placement, and 3D rotation. Writes v.v_MeshColor when\n// running in mesh mode with vertex color enabled.\nvec3 computeParticleCenter(Attributes attr, float age, float normalizedAge, inout Varyings v) {\n vec4 worldRotation;\n if (renderer_SimulationSpace == 0) {\n worldRotation = renderer_WorldRotation;\n } else {\n worldRotation = attr.a_SimulationWorldRotation;\n }\n\n vec3 localVelocity;\n vec3 worldVelocity;\n\n #ifdef RENDERER_TRANSFORM_FEEDBACK\n vec3 center;\n if (renderer_SimulationSpace == 0) {\n center = rotationByQuaternions(attr.a_FeedbackPosition, worldRotation) + renderer_WorldPosition;\n } else if (renderer_SimulationSpace == 1) {\n center = attr.a_FeedbackPosition;\n }\n localVelocity = attr.a_FeedbackVelocity;\n worldVelocity = vec3(0.0);\n\n #ifdef _VOL_MODULE_ENABLED\n vec3 instantVOLVelocity;\n computeVelocityPositionOffset(attr, normalizedAge, age, instantVOLVelocity);\n if (renderer_VOLSpace == 0) {\n localVelocity += instantVOLVelocity;\n } else {\n worldVelocity += instantVOLVelocity;\n }\n #endif\n #else\n vec3 startVelocity = attr.a_DirectionTime.xyz * attr.a_StartSpeed;\n vec3 gravityVelocity = renderer_Gravity * attr.a_Random0.x * age;\n localVelocity = startVelocity;\n worldVelocity = gravityVelocity;\n vec3 center = computeParticlePosition(attr, startVelocity, age, normalizedAge, gravityVelocity, worldRotation, localVelocity, worldVelocity);\n #endif\n\n // Billboard / Mesh mode positioning\n #ifdef RENDERER_MODE_SPHERE_BILLBOARD\n vec2 corner = attr.a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n vec3 sideVector = normalize(cross(camera_Forward, camera_Up));\n vec3 upVector = normalize(cross(sideVector, camera_Forward));\n corner *= computeParticleSizeBillboard(attr, attr.a_StartSize.xy, normalizedAge);\n #if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n if (renderer_ThreeDStartRotation) {\n vec3 rotation = radians(vec3(attr.a_StartRotation0.xy, computeParticleRotationFloat(attr, attr.a_StartRotation0.z, age, normalizedAge)));\n center += renderer_SizeScale.xzy * rotationByEuler(corner.x * sideVector + corner.y * upVector, rotation);\n } else {\n float rot = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.x, age, normalizedAge));\n float c = cos(rot);\n float s = sin(rot);\n mat2 rotation = mat2(c, -s, s, c);\n corner = rotation * corner;\n center += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * upVector);\n }\n #else\n if (renderer_ThreeDStartRotation) {\n center += renderer_SizeScale.xzy * rotationByEuler(corner.x * sideVector + corner.y * upVector, radians(attr.a_StartRotation0));\n } else {\n float c = cos(radians(attr.a_StartRotation0.x));\n float s = sin(radians(attr.a_StartRotation0.x));\n mat2 rotation = mat2(c, -s, s, c);\n corner = rotation * corner;\n center += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * upVector);\n }\n #endif\n #endif\n\n #ifdef RENDERER_MODE_STRETCHED_BILLBOARD\n vec2 corner = attr.a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n vec3 velocity = rotationByQuaternions(renderer_SizeScale * localVelocity, worldRotation) + worldVelocity;\n vec3 cameraUpVector = normalize(velocity);\n vec3 direction = normalize(center - camera_Position);\n vec3 sideVector = normalize(cross(direction, normalize(velocity)));\n\n sideVector = renderer_SizeScale.xzy * sideVector;\n cameraUpVector = length(vec3(renderer_SizeScale.x, 0.0, 0.0)) * cameraUpVector;\n\n vec2 size = computeParticleSizeBillboard(attr, attr.a_StartSize.xy, normalizedAge);\n\n const mat2 rotationZHalfPI = mat2(0.0, -1.0, 1.0, 0.0);\n corner = rotationZHalfPI * corner;\n corner.y = corner.y - abs(corner.y);\n\n float speed = length(velocity);\n center += sign(renderer_SizeScale.x) * (sign(renderer_StretchedBillboardLengthScale) * size.x * corner.x * sideVector\n + (speed * renderer_StretchedBillboardSpeedScale + size.y * renderer_StretchedBillboardLengthScale) * corner.y * cameraUpVector);\n #endif\n\n #ifdef RENDERER_MODE_HORIZONTAL_BILLBOARD\n vec2 corner = attr.a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n const vec3 sideVector = vec3(1.0, 0.0, 0.0);\n const vec3 upVector = vec3(0.0, 0.0, -1.0);\n corner *= computeParticleSizeBillboard(attr, attr.a_StartSize.xy, normalizedAge);\n\n float rot;\n if (renderer_ThreeDStartRotation) {\n rot = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.z, age, normalizedAge));\n } else {\n rot = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.x, age, normalizedAge));\n }\n\n float c = cos(rot);\n float s = sin(rot);\n mat2 rotation = mat2(c, -s, s, c);\n corner = rotation * corner;\n center += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * upVector);\n #endif\n\n #ifdef RENDERER_MODE_VERTICAL_BILLBOARD\n vec2 corner = attr.a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n const vec3 cameraUpVector = vec3(0.0, 1.0, 0.0);\n vec3 sideVector = normalize(cross(camera_Forward, cameraUpVector));\n\n float rot = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.x, age, normalizedAge));\n float c = cos(rot);\n float s = sin(rot);\n mat2 rotation = mat2(c, -s, s, c);\n corner = rotation * corner * cos(0.78539816339744830961566084581988);\n corner *= computeParticleSizeBillboard(attr, attr.a_StartSize.xy, normalizedAge);\n center += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * cameraUpVector);\n #endif\n\n #ifdef RENDERER_MODE_MESH\n #if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n #define RENDERER_ROL_ENABLED\n #endif\n\n vec3 size = computeParticleSizeMesh(attr, attr.a_StartSize, normalizedAge);\n\n bool is3DRotation = renderer_ThreeDStartRotation;\n #if defined(RENDERER_ROL_ENABLED) && defined(RENDERER_ROL_IS_SEPARATE)\n is3DRotation = true;\n #endif\n\n if (is3DRotation) {\n #ifdef RENDERER_ROL_ENABLED\n vec3 startRotation = renderer_ThreeDStartRotation ? attr.a_StartRotation0 : vec3(0.0, 0.0, attr.a_StartRotation0.x);\n vec3 rotation = radians(computeParticleRotationVec3(attr, startRotation, age, normalizedAge));\n #else\n vec3 rotation = radians(attr.a_StartRotation0);\n #endif\n center += rotationByQuaternions(renderer_SizeScale * rotationByEuler(attr.POSITION * size, rotation), worldRotation);\n } else {\n #ifdef RENDERER_ROL_ENABLED\n float angle = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.x, age, normalizedAge));\n #else\n float angle = radians(attr.a_StartRotation0.x);\n #endif\n #ifdef RENDERER_EMISSION_SHAPE\n vec3 axis = vec3(attr.a_ShapePositionStartLifeTime.xy, 0.0);\n if (renderer_SimulationSpace == 1) {\n axis = rotationByQuaternions(axis, worldRotation);\n }\n vec3 crossResult = cross(axis, vec3(0.0, 0.0, -1.0));\n float crossLen = length(crossResult);\n vec3 rotateAxis = crossLen > 0.0001 ? crossResult / crossLen : vec3(0.0, 1.0, 0.0);\n #else\n vec3 rotateAxis = vec3(0.0, 0.0, -1.0);\n #endif\n center += rotationByQuaternions(renderer_SizeScale * rotationByAxis(attr.POSITION * size, rotateAxis, angle), worldRotation);\n }\n #ifdef RENDERER_ENABLE_VERTEXCOLOR\n v.v_MeshColor = attr.COLOR_0;\n #endif\n #endif\n\n return center;\n}\n\n#ifdef MATERIAL_HAS_BASETEXTURE\n// Returns the texture-sheet animated UV for the particle, covering both\n// billboard and mesh paths.\nvec2 computeParticleVaryingUV(Attributes attr, float normalizedAge) {\n vec2 simulateUV;\n #if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\n simulateUV = attr.a_CornerTextureCoordinate.zw * attr.a_SimulationUV.xy + attr.a_SimulationUV.zw;\n #endif\n #ifdef RENDERER_MODE_MESH\n simulateUV = attr.a_SimulationUV.zw + attr.TEXCOORD_0 * attr.a_SimulationUV.xy;\n #endif\n return computeParticleUV(attr, simulateUV, normalizedAge);\n}\n#endif\n\n#endif\n";
|
|
78
|
+
|
|
77
79
|
var PostProcess_Bloom_BloomBlurH = "#ifndef BLOOM_BLUR_H\n#define BLOOM_BLUR_H\n\n#include \"ShaderLibrary/PostProcess/PostCommon.glsl\"\n\nmediump sampler2D renderer_BlitTexture;\nvec4 renderer_texelSize;\n\nvoid frag(Varyings v) {\n\tvec2 texelSize = renderer_texelSize.xy * 2.0;\n\n // 9-tap gaussian blur on the downsampled source\n mediump vec4 c0 = texture2DSRGB(renderer_BlitTexture, v.v_uv - vec2(texelSize.x * 4.0, 0.0));\n mediump vec4 c1 = texture2DSRGB(renderer_BlitTexture, v.v_uv - vec2(texelSize.x * 3.0, 0.0));\n mediump vec4 c2 = texture2DSRGB(renderer_BlitTexture, v.v_uv - vec2(texelSize.x * 2.0, 0.0));\n mediump vec4 c3 = texture2DSRGB(renderer_BlitTexture, v.v_uv - vec2(texelSize.x * 1.0, 0.0));\n mediump vec4 c4 = texture2DSRGB(renderer_BlitTexture, v.v_uv);\n mediump vec4 c5 = texture2DSRGB(renderer_BlitTexture, v.v_uv + vec2(texelSize.x * 1.0, 0.0));\n mediump vec4 c6 = texture2DSRGB(renderer_BlitTexture, v.v_uv + vec2(texelSize.x * 2.0, 0.0));\n mediump vec4 c7 = texture2DSRGB(renderer_BlitTexture, v.v_uv + vec2(texelSize.x * 3.0, 0.0));\n mediump vec4 c8 = texture2DSRGB(renderer_BlitTexture, v.v_uv + vec2(texelSize.x * 4.0, 0.0));\n\n gl_FragColor = c0 * 0.01621622 + c1 * 0.05405405 + c2 * 0.12162162 + c3 * 0.19459459\n + c4 * 0.22702703\n + c5 * 0.19459459 + c6 * 0.12162162 + c7 * 0.05405405 + c8 * 0.01621622;\n}\n\n#endif\n";
|
|
78
80
|
|
|
79
81
|
var PostProcess_Bloom_BloomBlurV = "#ifndef BLOOM_BLUR_V\n#define BLOOM_BLUR_V\n\n#include \"ShaderLibrary/PostProcess/PostCommon.glsl\"\n\nmediump sampler2D renderer_BlitTexture;\nvec4 renderer_texelSize;\n\nvoid frag(Varyings v) {\n vec2 texelSize = renderer_texelSize.xy;\n\n // Optimized bilinear 5-tap gaussian on the same-sized source (9-tap equivalent)\n mediump vec4 c0 = texture2DSRGB(renderer_BlitTexture, v.v_uv - vec2(0.0, texelSize.y * 3.23076923));\n mediump vec4 c1 = texture2DSRGB(renderer_BlitTexture, v.v_uv - vec2(0.0, texelSize.y * 1.38461538));\n mediump vec4 c2 = texture2DSRGB(renderer_BlitTexture, v.v_uv);\n mediump vec4 c3 = texture2DSRGB(renderer_BlitTexture, v.v_uv + vec2(0.0, texelSize.y * 1.38461538));\n mediump vec4 c4 = texture2DSRGB(renderer_BlitTexture, v.v_uv + vec2(0.0, texelSize.y * 3.23076923));\n\n gl_FragColor = c0 * 0.07027027 + c1 * 0.31621622\n + c2 * 0.22702703\n + c3 * 0.31621622 + c4 * 0.07027027;\n}\n\n#endif\n";
|
|
@@ -269,6 +271,10 @@ var shaderLibrary = [
|
|
|
269
271
|
source: Particle_ParticleMesh,
|
|
270
272
|
path: "ShaderLibrary/Particle/ParticleMesh.glsl"
|
|
271
273
|
},
|
|
274
|
+
{
|
|
275
|
+
source: Particle_ParticleVert,
|
|
276
|
+
path: "ShaderLibrary/Particle/ParticleVert.glsl"
|
|
277
|
+
},
|
|
272
278
|
{
|
|
273
279
|
source: PostProcess_Bloom_BloomBlurH,
|
|
274
280
|
path: "ShaderLibrary/PostProcess/Bloom/BloomBlurH.glsl"
|
|
@@ -365,7 +371,7 @@ var Blit_Blit = "Shader \"Blit/Blit\" {\n SubShader \"Default\" {\n Pass \"F
|
|
|
365
371
|
|
|
366
372
|
var Blit_BlitScreen = "Shader \"Blit/BlitScreen\" {\n SubShader \"Default\" {\n Pass \"Forward\" {\n Tags { pipelineStage = \"Forward\" }\n\n DepthState = {\n Enabled = false;\n WriteEnabled = false;\n }\n\n VertexShader = vert;\n FragmentShader = frag;\n\n #include \"ShaderLibrary/Common/Common.glsl\"\n\n mediump sampler2D renderer_BlitTexture;\n #ifdef HAS_TEX_LOD\n float renderer_BlitMipLevel;\n #endif\n\n struct Attributes {\n vec4 POSITION_UV;\n };\n\n struct Varyings {\n vec2 v_uv;\n };\n\n Varyings vert(Attributes attr) {\n Varyings v;\n gl_Position = vec4(attr.POSITION_UV.xy, 0.0, 1.0);\n v.v_uv = attr.POSITION_UV.zw;\n return v;\n }\n\n #ifdef HAS_TEX_LOD\n vec4 texture2DLodSRGB(sampler2D tex, vec2 uv, float lod) {\n vec4 color = texture2DLodEXT(tex, uv, lod);\n #ifdef ENGINE_NO_SRGB\n color = sRGBToLinear(color);\n #endif\n return color;\n }\n #endif\n\n void frag(Varyings v) {\n vec2 uv = v.v_uv;\n // Screen uv is flipped\n uv.y = 1.0 - uv.y;\n\n #ifdef HAS_TEX_LOD\n gl_FragColor = texture2DLodSRGB(renderer_BlitTexture, uv, renderer_BlitMipLevel);\n #else\n gl_FragColor = texture2D(renderer_BlitTexture, uv);\n #endif\n\n // Color space in screen is in gamma space but without sRGB texture, so convert to linear space\n gl_FragColor = sRGBToLinear(gl_FragColor);\n }\n }\n }\n}\n";
|
|
367
373
|
|
|
368
|
-
var Effect_Particle = "Shader \"Effect/Particle\" {\n Editor {\n Properties {\n Header(\"Base\") {\n material_BaseColor(\"BaseColor\", Color) = (1, 1, 1, 1);\n material_BaseTexture(\"BaseTexture\", Texture2D);\n }\n Header(\"Emissive\") {\n material_EmissiveColor(\"EmissiveColor\", HDRColor) = (0, 0, 0, 1);\n material_EmissiveTexture(\"EmissiveTexture\", Texture2D);\n }\n Header(\"Common\") {\n isTransparent(\"Transparent\", Boolean) = false;\n renderFace(\"Render Face\", Enum(Front:0, Back:1, Double:2)) = 0;\n blendMode(\"Blend Mode\", Enum(Normal:0, Additive:1)) = 0;\n material_AlphaCutoff(\"AlphaCutoff\", Range(0, 1, 0.01)) = 0;\n }\n }\n }\n\n SubShader \"Default\" {\n Pass \"Forward Pass\" {\n Tags { pipelineStage = \"Forward\" }\n\n RenderQueueType renderQueueType;\n BlendFactor sourceColorBlendFactor;\n BlendFactor destinationColorBlendFactor;\n BlendFactor sourceAlphaBlendFactor;\n BlendFactor destinationAlphaBlendFactor;\n CullMode rasterStateCullMode;\n Bool blendEnabled;\n Bool depthWriteEnabled;\n\n BlendState = {\n Enabled = blendEnabled;\n SourceColorBlendFactor = sourceColorBlendFactor;\n DestinationColorBlendFactor = destinationColorBlendFactor;\n SourceAlphaBlendFactor = sourceAlphaBlendFactor;\n DestinationAlphaBlendFactor = destinationAlphaBlendFactor;\n }\n DepthState = {\n WriteEnabled = depthWriteEnabled;\n }\n RasterState = {\n CullMode = rasterStateCullMode;\n }\n RenderQueueType = renderQueueType;\n\n VertexShader = vert;\n FragmentShader = frag;\n\n #include \"ShaderLibrary/Common/Common.glsl\"\n\n // Uniforms\n float renderer_CurrentTime;\n vec3 renderer_Gravity;\n vec3 renderer_WorldPosition;\n vec4 renderer_WorldRotation;\n bool renderer_ThreeDStartRotation;\n int renderer_ScalingMode;\n vec3 renderer_PositionScale;\n vec3 renderer_SizeScale;\n vec3 renderer_PivotOffset;\n\n mat4 camera_ViewMat;\n mat4 camera_ProjMat;\n\n #ifdef RENDERER_MODE_STRETCHED_BILLBOARD\n vec3 camera_Position;\n #endif\n vec3 camera_Forward;\n vec3 camera_Up;\n\n float renderer_StretchedBillboardLengthScale;\n float renderer_StretchedBillboardSpeedScale;\n int renderer_SimulationSpace;\n\n vec4 material_BaseColor;\n mediump vec3 material_EmissiveColor;\n\n #ifdef MATERIAL_HAS_BASETEXTURE\n sampler2D material_BaseTexture;\n #endif\n #ifdef MATERIAL_HAS_EMISSIVETEXTURE\n sampler2D material_EmissiveTexture;\n #endif\n\n struct Attributes {\n #if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\n vec4 a_CornerTextureCoordinate;\n #endif\n\n #ifdef RENDERER_MODE_MESH\n vec3 POSITION;\n #ifdef RENDERER_ENABLE_VERTEXCOLOR\n vec4 COLOR_0;\n #endif\n vec2 TEXCOORD_0;\n #endif\n\n vec4 a_ShapePositionStartLifeTime;\n vec4 a_DirectionTime;\n vec4 a_StartColor;\n vec3 a_StartSize;\n vec3 a_StartRotation0;\n float a_StartSpeed;\n vec4 a_Random0;\n\n #if defined(RENDERER_TSA_FRAME_RANDOM_CURVES) || defined(RENDERER_VOL_IS_RANDOM_TWO)\n vec4 a_Random1;\n #endif\n\n #if defined(RENDERER_FOL_CONSTANT_MODE) || defined(RENDERER_FOL_CURVE_MODE) || defined(RENDERER_LVL_MODULE_ENABLED)\n vec4 a_Random2;\n #endif\n\n vec3 a_SimulationWorldPosition;\n vec4 a_SimulationWorldRotation;\n\n #ifdef RENDERER_TRANSFORM_FEEDBACK\n vec3 a_FeedbackPosition;\n vec3 a_FeedbackVelocity;\n #endif\n\n #ifdef MATERIAL_HAS_BASETEXTURE\n vec4 a_SimulationUV;\n #endif\n };\n\n struct Varyings {\n vec4 v_Color;\n #ifdef MATERIAL_HAS_BASETEXTURE\n vec2 v_TextureCoordinate;\n #endif\n #ifdef RENDERER_MODE_MESH\n vec4 v_MeshColor;\n #endif\n };\n\n // Particle module includes (must be after Attributes/Varyings declarations)\n #include \"ShaderLibrary/Particle/ParticleCommon.glsl\"\n #include \"ShaderLibrary/Particle/Module/VelocityOverLifetime.glsl\"\n #include \"ShaderLibrary/Particle/Module/ForceOverLifetime.glsl\"\n #include \"ShaderLibrary/Particle/Module/ColorOverLifetime.glsl\"\n #include \"ShaderLibrary/Particle/Module/SizeOverLifetime.glsl\"\n #include \"ShaderLibrary/Particle/Module/RotationOverLifetime.glsl\"\n #include \"ShaderLibrary/Particle/Module/TextureSheetAnimation.glsl\"\n #include \"ShaderLibrary/Particle/Module/LimitVelocityOverLifetime.glsl\"\n\n vec3 computeParticlePosition(Attributes attributes, in vec3 startVelocity, in float age, in float normalizedAge, vec3 gravityVelocity, vec4 worldRotation, inout vec3 localVelocity, inout vec3 worldVelocity) {\n vec3 startPosition = startVelocity * age;\n vec3 finalPosition;\n vec3 localPositionOffset = startPosition;\n vec3 worldPositionOffset;\n\n #ifdef _VOL_MODULE_ENABLED\n vec3 lifeVelocity;\n vec3 velocityPositionOffset = computeVelocityPositionOffset(attributes, normalizedAge, age, lifeVelocity);\n if (renderer_VOLSpace == 0) {\n localVelocity += lifeVelocity;\n localPositionOffset += velocityPositionOffset;\n } else {\n worldVelocity += lifeVelocity;\n worldPositionOffset += velocityPositionOffset;\n }\n #endif\n\n #ifdef _FOL_MODULE_ENABLED\n vec3 forceVelocity;\n vec3 forcePositionOffset = computeForcePositionOffset(attributes, normalizedAge, age, forceVelocity);\n if (renderer_FOLSpace == 0) {\n localVelocity += forceVelocity;\n localPositionOffset += forcePositionOffset;\n } else {\n worldVelocity += forceVelocity;\n worldPositionOffset += forcePositionOffset;\n }\n #endif\n\n finalPosition = rotationByQuaternions(attributes.a_ShapePositionStartLifeTime.xyz + localPositionOffset, worldRotation) + worldPositionOffset;\n\n if (renderer_SimulationSpace == 0) {\n finalPosition = finalPosition + renderer_WorldPosition;\n } else if (renderer_SimulationSpace == 1) {\n finalPosition = finalPosition + attributes.a_SimulationWorldPosition;\n }\n\n finalPosition += 0.5 * gravityVelocity * age;\n\n return finalPosition;\n }\n\n\n Varyings vert(Attributes attr) {\n Varyings v;\n\n float age = renderer_CurrentTime - attr.a_DirectionTime.w;\n float normalizedAge = age / attr.a_ShapePositionStartLifeTime.w;\n\n if (normalizedAge >= 0.0 && normalizedAge < 1.0) {\n vec4 worldRotation;\n if (renderer_SimulationSpace == 0) {\n worldRotation = renderer_WorldRotation;\n } else {\n worldRotation = attr.a_SimulationWorldRotation;\n }\n\n vec3 localVelocity;\n vec3 worldVelocity;\n\n #ifdef RENDERER_TRANSFORM_FEEDBACK\n vec3 center;\n if (renderer_SimulationSpace == 0) {\n center = rotationByQuaternions(attr.a_FeedbackPosition, worldRotation) + renderer_WorldPosition;\n } else if (renderer_SimulationSpace == 1) {\n center = attr.a_FeedbackPosition;\n }\n localVelocity = attr.a_FeedbackVelocity;\n worldVelocity = vec3(0.0);\n\n #ifdef _VOL_MODULE_ENABLED\n vec3 instantVOLVelocity;\n computeVelocityPositionOffset(attr, normalizedAge, age, instantVOLVelocity);\n if (renderer_VOLSpace == 0) {\n localVelocity += instantVOLVelocity;\n } else {\n worldVelocity += instantVOLVelocity;\n }\n #endif\n #else\n vec3 startVelocity = attr.a_DirectionTime.xyz * attr.a_StartSpeed;\n vec3 gravityVelocity = renderer_Gravity * attr.a_Random0.x * age;\n localVelocity = startVelocity;\n worldVelocity = gravityVelocity;\n vec3 center = computeParticlePosition(attr, startVelocity, age, normalizedAge, gravityVelocity, worldRotation, localVelocity, worldVelocity);\n #endif\n\n // Billboard / Mesh mode positioning\n #ifdef RENDERER_MODE_SPHERE_BILLBOARD\n vec2 corner = attr.a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n vec3 sideVector = normalize(cross(camera_Forward, camera_Up));\n vec3 upVector = normalize(cross(sideVector, camera_Forward));\n corner *= computeParticleSizeBillboard(attr, attr.a_StartSize.xy, normalizedAge);\n #if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n if (renderer_ThreeDStartRotation) {\n vec3 rotation = radians(vec3(attr.a_StartRotation0.xy, computeParticleRotationFloat(attr, attr.a_StartRotation0.z, age, normalizedAge)));\n center += renderer_SizeScale.xzy * rotationByEuler(corner.x * sideVector + corner.y * upVector, rotation);\n } else {\n float rot = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.x, age, normalizedAge));\n float c = cos(rot);\n float s = sin(rot);\n mat2 rotation = mat2(c, -s, s, c);\n corner = rotation * corner;\n center += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * upVector);\n }\n #else\n if (renderer_ThreeDStartRotation) {\n center += renderer_SizeScale.xzy * rotationByEuler(corner.x * sideVector + corner.y * upVector, radians(attr.a_StartRotation0));\n } else {\n float c = cos(radians(attr.a_StartRotation0.x));\n float s = sin(radians(attr.a_StartRotation0.x));\n mat2 rotation = mat2(c, -s, s, c);\n corner = rotation * corner;\n center += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * upVector);\n }\n #endif\n #endif\n\n #ifdef RENDERER_MODE_STRETCHED_BILLBOARD\n vec2 corner = attr.a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n vec3 velocity = rotationByQuaternions(renderer_SizeScale * localVelocity, worldRotation) + worldVelocity;\n vec3 cameraUpVector = normalize(velocity);\n vec3 direction = normalize(center - camera_Position);\n vec3 sideVector = normalize(cross(direction, normalize(velocity)));\n\n sideVector = renderer_SizeScale.xzy * sideVector;\n cameraUpVector = length(vec3(renderer_SizeScale.x, 0.0, 0.0)) * cameraUpVector;\n\n vec2 size = computeParticleSizeBillboard(attr, attr.a_StartSize.xy, normalizedAge);\n\n const mat2 rotationZHalfPI = mat2(0.0, -1.0, 1.0, 0.0);\n corner = rotationZHalfPI * corner;\n corner.y = corner.y - abs(corner.y);\n\n float speed = length(velocity);\n center += sign(renderer_SizeScale.x) * (sign(renderer_StretchedBillboardLengthScale) * size.x * corner.x * sideVector\n + (speed * renderer_StretchedBillboardSpeedScale + size.y * renderer_StretchedBillboardLengthScale) * corner.y * cameraUpVector);\n #endif\n\n #ifdef RENDERER_MODE_HORIZONTAL_BILLBOARD\n vec2 corner = attr.a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n const vec3 sideVector = vec3(1.0, 0.0, 0.0);\n const vec3 upVector = vec3(0.0, 0.0, -1.0);\n corner *= computeParticleSizeBillboard(attr, attr.a_StartSize.xy, normalizedAge);\n\n float rot;\n if (renderer_ThreeDStartRotation) {\n rot = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.z, age, normalizedAge));\n } else {\n rot = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.x, age, normalizedAge));\n }\n\n float c = cos(rot);\n float s = sin(rot);\n mat2 rotation = mat2(c, -s, s, c);\n corner = rotation * corner;\n center += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * upVector);\n #endif\n\n #ifdef RENDERER_MODE_VERTICAL_BILLBOARD\n vec2 corner = attr.a_CornerTextureCoordinate.xy + renderer_PivotOffset.xy;\n const vec3 cameraUpVector = vec3(0.0, 1.0, 0.0);\n vec3 sideVector = normalize(cross(camera_Forward, cameraUpVector));\n\n float rot = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.x, age, normalizedAge));\n float c = cos(rot);\n float s = sin(rot);\n mat2 rotation = mat2(c, -s, s, c);\n corner = rotation * corner * cos(0.78539816339744830961566084581988);\n corner *= computeParticleSizeBillboard(attr, attr.a_StartSize.xy, normalizedAge);\n center += renderer_SizeScale.xzy * (corner.x * sideVector + corner.y * cameraUpVector);\n #endif\n\n #ifdef RENDERER_MODE_MESH\n #if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\n #define RENDERER_ROL_ENABLED\n #endif\n\n vec3 size = computeParticleSizeMesh(attr, attr.a_StartSize, normalizedAge);\n\n bool is3DRotation = renderer_ThreeDStartRotation;\n #if defined(RENDERER_ROL_ENABLED) && defined(RENDERER_ROL_IS_SEPARATE)\n is3DRotation = true;\n #endif\n\n if (is3DRotation) {\n #ifdef RENDERER_ROL_ENABLED\n vec3 startRotation = renderer_ThreeDStartRotation ? attr.a_StartRotation0 : vec3(0.0, 0.0, attr.a_StartRotation0.x);\n vec3 rotation = radians(computeParticleRotationVec3(attr, startRotation, age, normalizedAge));\n #else\n vec3 rotation = radians(attr.a_StartRotation0);\n #endif\n center += rotationByQuaternions(renderer_SizeScale * rotationByEuler(attr.POSITION * size, rotation), worldRotation);\n } else {\n #ifdef RENDERER_ROL_ENABLED\n float angle = radians(computeParticleRotationFloat(attr, attr.a_StartRotation0.x, age, normalizedAge));\n #else\n float angle = radians(attr.a_StartRotation0.x);\n #endif\n #ifdef RENDERER_EMISSION_SHAPE\n vec3 axis = vec3(attr.a_ShapePositionStartLifeTime.xy, 0.0);\n if (renderer_SimulationSpace == 1) {\n axis = rotationByQuaternions(axis, worldRotation);\n }\n vec3 crossResult = cross(axis, vec3(0.0, 0.0, -1.0));\n float crossLen = length(crossResult);\n vec3 rotateAxis = crossLen > 0.0001 ? crossResult / crossLen : vec3(0.0, 1.0, 0.0);\n #else\n vec3 rotateAxis = vec3(0.0, 0.0, -1.0);\n #endif\n center += rotationByQuaternions(renderer_SizeScale * rotationByAxis(attr.POSITION * size, rotateAxis, angle), worldRotation);\n }\n #ifdef RENDERER_ENABLE_VERTEXCOLOR\n v.v_MeshColor = attr.COLOR_0;\n #endif\n #endif\n\n gl_Position = camera_ProjMat * camera_ViewMat * vec4(center, 1.0);\n v.v_Color = computeParticleColor(attr, attr.a_StartColor, normalizedAge);\n\n #ifdef MATERIAL_HAS_BASETEXTURE\n vec2 simulateUV;\n #if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\n simulateUV = attr.a_CornerTextureCoordinate.zw * attr.a_SimulationUV.xy + attr.a_SimulationUV.zw;\n v.v_TextureCoordinate = computeParticleUV(attr, simulateUV, normalizedAge);\n #endif\n #ifdef RENDERER_MODE_MESH\n simulateUV = attr.a_SimulationUV.zw + attr.TEXCOORD_0 * attr.a_SimulationUV.xy;\n v.v_TextureCoordinate = computeParticleUV(attr, simulateUV, normalizedAge);\n #endif\n #endif\n } else {\n gl_Position = vec4(2.0, 2.0, 2.0, 1.0);\n }\n\n return v;\n }\n\n\n void frag(Varyings v) {\n vec4 color = material_BaseColor * v.v_Color;\n\n #if defined(RENDERER_MODE_MESH) && defined(RENDERER_ENABLE_VERTEXCOLOR)\n color *= v.v_MeshColor;\n #endif\n\n #ifdef MATERIAL_HAS_BASETEXTURE\n color *= texture2DSRGB(material_BaseTexture, v.v_TextureCoordinate);\n #endif\n\n // Emissive\n vec3 emissiveRadiance = material_EmissiveColor;\n #ifdef MATERIAL_HAS_EMISSIVETEXTURE\n emissiveRadiance *= texture2DSRGB(material_EmissiveTexture, v.v_TextureCoordinate).rgb;\n #endif\n\n color.rgb += emissiveRadiance;\n\n gl_FragColor = color;\n }\n }\n }\n}\n";
|
|
374
|
+
var Effect_Particle = "Shader \"Effect/Particle\" {\n Editor {\n Properties {\n Header(\"Base\") {\n material_BaseColor(\"BaseColor\", Color) = (1, 1, 1, 1);\n material_BaseTexture(\"BaseTexture\", Texture2D);\n }\n Header(\"Emissive\") {\n material_EmissiveColor(\"EmissiveColor\", HDRColor) = (0, 0, 0, 1);\n material_EmissiveTexture(\"EmissiveTexture\", Texture2D);\n }\n Header(\"Common\") {\n isTransparent(\"Transparent\", Boolean) = false;\n renderFace(\"Render Face\", Enum(Front:0, Back:1, Double:2)) = 0;\n blendMode(\"Blend Mode\", Enum(Normal:0, Additive:1)) = 0;\n material_AlphaCutoff(\"AlphaCutoff\", Range(0, 1, 0.01)) = 0;\n }\n }\n }\n\n SubShader \"Default\" {\n Pass \"Forward Pass\" {\n Tags { pipelineStage = \"Forward\" }\n\n RenderQueueType renderQueueType;\n BlendFactor sourceColorBlendFactor;\n BlendFactor destinationColorBlendFactor;\n BlendFactor sourceAlphaBlendFactor;\n BlendFactor destinationAlphaBlendFactor;\n CullMode rasterStateCullMode;\n Bool blendEnabled;\n Bool depthWriteEnabled;\n\n BlendState = {\n Enabled = blendEnabled;\n SourceColorBlendFactor = sourceColorBlendFactor;\n DestinationColorBlendFactor = destinationColorBlendFactor;\n SourceAlphaBlendFactor = sourceAlphaBlendFactor;\n DestinationAlphaBlendFactor = destinationAlphaBlendFactor;\n }\n DepthState = {\n WriteEnabled = depthWriteEnabled;\n }\n RasterState = {\n CullMode = rasterStateCullMode;\n }\n RenderQueueType = renderQueueType;\n\n VertexShader = vert;\n FragmentShader = frag;\n\n #include \"ShaderLibrary/Particle/ParticleVert.glsl\"\n\n Varyings vert(Attributes attr) {\n Varyings v;\n float age = renderer_CurrentTime - attr.a_DirectionTime.w;\n float normalizedAge = age / attr.a_ShapePositionStartLifeTime.w;\n\n if (normalizedAge >= 0.0 && normalizedAge < 1.0) {\n vec3 center = computeParticleCenter(attr, age, normalizedAge, v);\n gl_Position = camera_ProjMat * camera_ViewMat * vec4(center, 1.0);\n v.v_Color = computeParticleColor(attr, attr.a_StartColor, normalizedAge);\n #ifdef MATERIAL_HAS_BASETEXTURE\n v.v_TextureCoordinate = computeParticleVaryingUV(attr, normalizedAge);\n #endif\n } else {\n gl_Position = vec4(2.0, 2.0, 2.0, 1.0);\n }\n\n return v;\n }\n\n void frag(Varyings v) {\n vec4 color = material_BaseColor * v.v_Color;\n\n #if defined(RENDERER_MODE_MESH) && defined(RENDERER_ENABLE_VERTEXCOLOR)\n color *= v.v_MeshColor;\n #endif\n\n #ifdef MATERIAL_HAS_BASETEXTURE\n color *= texture2DSRGB(material_BaseTexture, v.v_TextureCoordinate);\n #endif\n\n vec3 emissiveRadiance = material_EmissiveColor;\n #ifdef MATERIAL_HAS_EMISSIVETEXTURE\n emissiveRadiance *= texture2DSRGB(material_EmissiveTexture, v.v_TextureCoordinate).rgb;\n #endif\n\n color.rgb += emissiveRadiance;\n\n gl_FragColor = color;\n }\n }\n }\n}\n";
|
|
369
375
|
|
|
370
376
|
var Effect_ParticleFeedback = "Shader \"Effect/ParticleFeedback\" {\n SubShader \"Default\" {\n Pass \"TransformFeedback\" {\n Tags { pipelineStage = \"TransformFeedback\" }\n\n VertexShader = main;\n FragmentShader = frag;\n\n #include \"ShaderLibrary/Common/Common.glsl\"\n\n // Uniforms\n float renderer_CurrentTime;\n float renderer_DeltaTime;\n vec3 renderer_Gravity;\n vec2 renderer_LVLDragConstant;\n vec3 renderer_WorldPosition;\n vec4 renderer_WorldRotation;\n int renderer_SimulationSpace;\n\n struct Attributes {\n vec3 a_FeedbackPosition;\n vec3 a_FeedbackVelocity;\n vec4 a_ShapePositionStartLifeTime;\n vec4 a_DirectionTime;\n vec3 a_StartSize;\n float a_StartSpeed;\n vec4 a_Random0;\n\n #if defined(RENDERER_TSA_FRAME_RANDOM_CURVES) || defined(RENDERER_VOL_IS_RANDOM_TWO)\n vec4 a_Random1;\n #endif\n\n vec3 a_SimulationWorldPosition;\n vec4 a_SimulationWorldRotation;\n\n #if defined(RENDERER_FOL_CONSTANT_MODE) || defined(RENDERER_FOL_CURVE_MODE) || defined(RENDERER_LVL_MODULE_ENABLED)\n vec4 a_Random2;\n #endif\n };\n\n struct Varyings {\n vec3 v_FeedbackPosition;\n vec3 v_FeedbackVelocity;\n };\n\n // Module includes (after Attributes/Varyings)\n #include \"ShaderLibrary/Particle/ParticleCommon.glsl\"\n #include \"ShaderLibrary/Particle/Module/VelocityOverLifetime.glsl\"\n #include \"ShaderLibrary/Particle/Module/ForceOverLifetime.glsl\"\n #include \"ShaderLibrary/Particle/Module/LimitVelocityOverLifetime.glsl\"\n #include \"ShaderLibrary/Particle/Module/NoiseModule.glsl\"\n\n // Get VOL instantaneous velocity at normalizedAge\n vec3 getVOLVelocity(Attributes attributes, float normalizedAge) {\n vec3 vel = vec3(0.0);\n #ifdef _VOL_MODULE_ENABLED\n #ifdef RENDERER_VOL_CONSTANT_MODE\n vel = renderer_VOLMaxConst;\n #ifdef RENDERER_VOL_IS_RANDOM_TWO\n vel = mix(renderer_VOLMinConst, vel, attributes.a_Random1.yzw);\n #endif\n #endif\n #ifdef RENDERER_VOL_CURVE_MODE\n vel = vec3(\n evaluateParticleCurve(renderer_VOLMaxGradientX, normalizedAge),\n evaluateParticleCurve(renderer_VOLMaxGradientY, normalizedAge),\n evaluateParticleCurve(renderer_VOLMaxGradientZ, normalizedAge)\n );\n #ifdef RENDERER_VOL_IS_RANDOM_TWO\n vec3 minVel = vec3(\n evaluateParticleCurve(renderer_VOLMinGradientX, normalizedAge),\n evaluateParticleCurve(renderer_VOLMinGradientY, normalizedAge),\n evaluateParticleCurve(renderer_VOLMinGradientZ, normalizedAge)\n );\n vel = mix(minVel, vel, attributes.a_Random1.yzw);\n #endif\n #endif\n #endif\n return vel;\n }\n\n // Get FOL instantaneous acceleration at normalizedAge\n vec3 getFOLAcceleration(Attributes attributes, float normalizedAge) {\n vec3 acc = vec3(0.0);\n #ifdef _FOL_MODULE_ENABLED\n #ifdef RENDERER_FOL_CONSTANT_MODE\n acc = renderer_FOLMaxConst;\n #ifdef RENDERER_FOL_IS_RANDOM_TWO\n acc = mix(renderer_FOLMinConst, acc, vec3(attributes.a_Random2.x, attributes.a_Random2.y, attributes.a_Random2.z));\n #endif\n #endif\n #ifdef RENDERER_FOL_CURVE_MODE\n acc = vec3(\n evaluateParticleCurve(renderer_FOLMaxGradientX, normalizedAge),\n evaluateParticleCurve(renderer_FOLMaxGradientY, normalizedAge),\n evaluateParticleCurve(renderer_FOLMaxGradientZ, normalizedAge)\n );\n #ifdef RENDERER_FOL_IS_RANDOM_TWO\n vec3 minAcc = vec3(\n evaluateParticleCurve(renderer_FOLMinGradientX, normalizedAge),\n evaluateParticleCurve(renderer_FOLMinGradientY, normalizedAge),\n evaluateParticleCurve(renderer_FOLMinGradientZ, normalizedAge)\n );\n acc = mix(minAcc, acc, vec3(attributes.a_Random2.x, attributes.a_Random2.y, attributes.a_Random2.z));\n #endif\n #endif\n #endif\n return acc;\n }\n\n Varyings main(Attributes attr) {\n Varyings v;\n\n float age = renderer_CurrentTime - attr.a_DirectionTime.w;\n float lifetime = attr.a_ShapePositionStartLifeTime.w;\n float normalizedAge = age / lifetime;\n float dt = min(renderer_DeltaTime, age);\n\n if (normalizedAge >= 1.0 || normalizedAge < 0.0) {\n v.v_FeedbackPosition = attr.a_FeedbackPosition;\n v.v_FeedbackVelocity = attr.a_FeedbackVelocity;\n gl_Position = vec4(0.0);\n return v;\n }\n\n vec4 worldRotation;\n if (renderer_SimulationSpace == 0) {\n worldRotation = renderer_WorldRotation;\n } else {\n worldRotation = attr.a_SimulationWorldRotation;\n }\n vec4 invWorldRotation = quaternionConjugate(worldRotation);\n\n vec3 localVelocity = attr.a_FeedbackVelocity;\n\n // Step 1: VOL + FOL + Gravity\n vec3 gravityDelta = renderer_Gravity * attr.a_Random0.x * dt;\n\n vec3 volLocal = vec3(0.0);\n vec3 volWorld = vec3(0.0);\n #ifdef _VOL_MODULE_ENABLED\n vec3 vol = getVOLVelocity(attr, normalizedAge);\n if (renderer_VOLSpace == 0) {\n volLocal = vol;\n } else {\n volWorld = vol;\n }\n #endif\n\n vec3 folDeltaLocal = vec3(0.0);\n #ifdef _FOL_MODULE_ENABLED\n vec3 folAcc = getFOLAcceleration(attr, normalizedAge);\n vec3 folVelDelta = folAcc * dt;\n if (renderer_FOLSpace == 0) {\n folDeltaLocal = folVelDelta;\n } else {\n folDeltaLocal = rotationByQuaternions(folVelDelta, invWorldRotation);\n }\n #endif\n\n vec3 gravityLocal = rotationByQuaternions(gravityDelta, invWorldRotation);\n localVelocity += folDeltaLocal + gravityLocal;\n\n // Step 2 & 3: Dampen + Drag\n #ifdef RENDERER_LVL_MODULE_ENABLED\n vec3 volAsLocal = volLocal + rotationByQuaternions(volWorld, invWorldRotation);\n vec3 volAsWorld = rotationByQuaternions(volLocal, worldRotation) + volWorld;\n\n float limitRand = attr.a_Random2.w;\n float dampen = renderer_LVLDampen;\n float effectiveDampen = 1.0 - pow(1.0 - dampen, dt * 30.0);\n\n if (renderer_LVLSpace == 0) {\n vec3 totalLocal = localVelocity + volAsLocal;\n vec3 dampenedTotal = applyLVLSpeedLimitTF(totalLocal, normalizedAge, limitRand, effectiveDampen);\n localVelocity = dampenedTotal - volAsLocal;\n } else {\n vec3 totalWorld = rotationByQuaternions(localVelocity, worldRotation) + volAsWorld;\n vec3 dampenedTotal = applyLVLSpeedLimitTF(totalWorld, normalizedAge, limitRand, effectiveDampen);\n localVelocity = rotationByQuaternions(dampenedTotal - volAsWorld, invWorldRotation);\n }\n\n {\n float dragCoeff = evaluateLVLDrag(normalizedAge, attr.a_Random2.w);\n if (dragCoeff > 0.0) {\n vec3 totalVel;\n if (renderer_LVLSpace == 0) {\n totalVel = localVelocity + volAsLocal;\n } else {\n totalVel = rotationByQuaternions(localVelocity, worldRotation) + volAsWorld;\n }\n float velMagSqr = dot(totalVel, totalVel);\n float velMag = sqrt(velMagSqr);\n\n float drag = dragCoeff;\n\n #ifdef RENDERER_LVL_DRAG_MULTIPLY_SIZE\n float maxDim = max(attr.a_StartSize.x, max(attr.a_StartSize.y, attr.a_StartSize.z));\n float radius = maxDim * 0.5;\n drag *= 3.14159265 * radius * radius;\n #endif\n\n #ifdef RENDERER_LVL_DRAG_MULTIPLY_VELOCITY\n drag *= velMagSqr;\n #endif\n\n if (velMag > 0.0) {\n float newVelMag = max(0.0, velMag - drag * dt);\n vec3 draggedTotal = totalVel * (newVelMag / velMag);\n if (renderer_LVLSpace == 0) {\n localVelocity = draggedTotal - volAsLocal;\n } else {\n localVelocity = rotationByQuaternions(draggedTotal - volAsWorld, invWorldRotation);\n }\n }\n }\n }\n #endif\n\n // Step 4: Integrate position\n vec3 totalVelocity;\n if (renderer_SimulationSpace == 0) {\n totalVelocity = localVelocity + volLocal + rotationByQuaternions(volWorld, invWorldRotation);\n } else {\n totalVelocity = rotationByQuaternions(localVelocity + volLocal, worldRotation) + volWorld;\n }\n #ifdef RENDERER_NOISE_MODULE_ENABLED\n vec3 noiseBasePos;\n if (renderer_SimulationSpace == 0) {\n noiseBasePos = attr.a_ShapePositionStartLifeTime.xyz + attr.a_DirectionTime.xyz * attr.a_StartSpeed * age;\n } else {\n noiseBasePos = rotationByQuaternions(\n attr.a_ShapePositionStartLifeTime.xyz + attr.a_DirectionTime.xyz * attr.a_StartSpeed * age,\n worldRotation) + attr.a_SimulationWorldPosition;\n }\n totalVelocity += computeNoiseVelocity(attr, noiseBasePos, normalizedAge);\n #endif\n vec3 position = attr.a_FeedbackPosition + totalVelocity * dt;\n\n v.v_FeedbackPosition = position;\n v.v_FeedbackVelocity = localVelocity;\n gl_Position = vec4(0.0);\n return v;\n }\n\n void frag(Varyings v) {\n discard;\n }\n }\n }\n}\n";
|
|
371
377
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sources.module.js","sources":["../src/ShaderLibrary/index.ts","../src/Shaders/index.ts"],"sourcesContent":["// Auto-generated by shader-compiler-precompile --emit-sources — do not edit.\n\nimport type { IShaderSource } from \"../Shaders\";\nimport BlinnPhong_ForwardPassBlinnPhong from \"./BlinnPhong/ForwardPassBlinnPhong.glsl\";\nimport BlinnPhong_MobileBlinnPhong from \"./BlinnPhong/MobileBlinnPhong.glsl\";\nimport Blit_BlitVertex from \"./Blit/BlitVertex.glsl\";\nimport Common_Attributes from \"./Common/Attributes.glsl\";\nimport Common_Common from \"./Common/Common.glsl\";\nimport Common_Fog from \"./Common/Fog.glsl\";\nimport Common_Normal from \"./Common/Normal.glsl\";\nimport Common_Transform from \"./Common/Transform.glsl\";\nimport Lighting_AmbientOcclusion_BilateralBlur from \"./Lighting/AmbientOcclusion/BilateralBlur.glsl\";\nimport Lighting_AmbientOcclusion_ScalableAmbientOcclusion from \"./Lighting/AmbientOcclusion/ScalableAmbientOcclusion.glsl\";\nimport Lighting_Light from \"./Lighting/Light.glsl\";\nimport Noise_NoiseCommon from \"./Noise/NoiseCommon.glsl\";\nimport Noise_NoiseSimplexGrad from \"./Noise/NoiseSimplexGrad.glsl\";\nimport PBR_BSDF from \"./PBR/BSDF.glsl\";\nimport PBR_ForwardPassPBR from \"./PBR/ForwardPassPBR.glsl\";\nimport PBR_FragmentPBR from \"./PBR/FragmentPBR.glsl\";\nimport PBR_LightDirectPBR from \"./PBR/LightDirectPBR.glsl\";\nimport PBR_LightIndirectFunctions from \"./PBR/LightIndirectFunctions.glsl\";\nimport PBR_LightIndirectPBR from \"./PBR/LightIndirectPBR.glsl\";\nimport PBR_ReflectionLobe from \"./PBR/ReflectionLobe.glsl\";\nimport PBR_Refraction from \"./PBR/Refraction.glsl\";\nimport PBR_VaryingsPBR from \"./PBR/VaryingsPBR.glsl\";\nimport PBR_VertexPBR from \"./PBR/VertexPBR.glsl\";\nimport Particle_Billboard_HorizontalBillboard from \"./Particle/Billboard/HorizontalBillboard.glsl\";\nimport Particle_Billboard_SphereBillboard from \"./Particle/Billboard/SphereBillboard.glsl\";\nimport Particle_Billboard_StretchedBillboard from \"./Particle/Billboard/StretchedBillboard.glsl\";\nimport Particle_Billboard_VerticalBillboard from \"./Particle/Billboard/VerticalBillboard.glsl\";\nimport Particle_Module_ColorOverLifetime from \"./Particle/Module/ColorOverLifetime.glsl\";\nimport Particle_Module_ForceOverLifetime from \"./Particle/Module/ForceOverLifetime.glsl\";\nimport Particle_Module_LimitVelocityOverLifetime from \"./Particle/Module/LimitVelocityOverLifetime.glsl\";\nimport Particle_Module_NoiseModule from \"./Particle/Module/NoiseModule.glsl\";\nimport Particle_Module_RotationOverLifetime from \"./Particle/Module/RotationOverLifetime.glsl\";\nimport Particle_Module_SizeOverLifetime from \"./Particle/Module/SizeOverLifetime.glsl\";\nimport Particle_Module_TextureSheetAnimation from \"./Particle/Module/TextureSheetAnimation.glsl\";\nimport Particle_Module_VelocityOverLifetime from \"./Particle/Module/VelocityOverLifetime.glsl\";\nimport Particle_ParticleCommon from \"./Particle/ParticleCommon.glsl\";\nimport Particle_ParticleFeedback from \"./Particle/ParticleFeedback.glsl\";\nimport Particle_ParticleMesh from \"./Particle/ParticleMesh.glsl\";\nimport PostProcess_Bloom_BloomBlurH from \"./PostProcess/Bloom/BloomBlurH.glsl\";\nimport PostProcess_Bloom_BloomBlurV from \"./PostProcess/Bloom/BloomBlurV.glsl\";\nimport PostProcess_Bloom_BloomPrefilter from \"./PostProcess/Bloom/BloomPrefilter.glsl\";\nimport PostProcess_Bloom_BloomUpsample from \"./PostProcess/Bloom/BloomUpsample.glsl\";\nimport PostProcess_FXAA_FXAA3_11 from \"./PostProcess/FXAA/FXAA3_11.glsl\";\nimport PostProcess_Filtering from \"./PostProcess/Filtering.glsl\";\nimport PostProcess_FinalAntiAliasing from \"./PostProcess/FinalAntiAliasing.glsl\";\nimport PostProcess_FinalSRGB from \"./PostProcess/FinalSRGB.glsl\";\nimport PostProcess_PostCommon from \"./PostProcess/PostCommon.glsl\";\nimport PostProcess_Tonemapping_ACES_ColorTransform from \"./PostProcess/Tonemapping/ACES/ColorTransform.glsl\";\nimport PostProcess_Tonemapping_ACES_ODT from \"./PostProcess/Tonemapping/ACES/ODT.glsl\";\nimport PostProcess_Tonemapping_ACES_RRT from \"./PostProcess/Tonemapping/ACES/RRT.glsl\";\nimport PostProcess_Tonemapping_ACES_Tonescale from \"./PostProcess/Tonemapping/ACES/Tonescale.glsl\";\nimport PostProcess_Tonemapping_ACESTonemapping from \"./PostProcess/Tonemapping/ACESTonemapping.glsl\";\nimport PostProcess_Tonemapping_NeutralTonemapping from \"./PostProcess/Tonemapping/NeutralTonemapping.glsl\";\nimport PostProcess_UberPost from \"./PostProcess/UberPost.glsl\";\nimport Shadow_Shadow from \"./Shadow/Shadow.glsl\";\nimport Shadow_ShadowSampleTent from \"./Shadow/ShadowSampleTent.glsl\";\nimport Skin_BlendShape from \"./Skin/BlendShape.glsl\";\nimport Skin_Skin from \"./Skin/Skin.glsl\";\n\n// prettier-ignore\nexport const shaderLibrary: IShaderSource[] = [\n { source: BlinnPhong_ForwardPassBlinnPhong, path: \"ShaderLibrary/BlinnPhong/ForwardPassBlinnPhong.glsl\" },\n { source: BlinnPhong_MobileBlinnPhong, path: \"ShaderLibrary/BlinnPhong/MobileBlinnPhong.glsl\" },\n { source: Blit_BlitVertex, path: \"ShaderLibrary/Blit/BlitVertex.glsl\" },\n { source: Common_Attributes, path: \"ShaderLibrary/Common/Attributes.glsl\" },\n { source: Common_Common, path: \"ShaderLibrary/Common/Common.glsl\" },\n { source: Common_Fog, path: \"ShaderLibrary/Common/Fog.glsl\" },\n { source: Common_Normal, path: \"ShaderLibrary/Common/Normal.glsl\" },\n { source: Common_Transform, path: \"ShaderLibrary/Common/Transform.glsl\" },\n { source: Lighting_AmbientOcclusion_BilateralBlur, path: \"ShaderLibrary/Lighting/AmbientOcclusion/BilateralBlur.glsl\" },\n { source: Lighting_AmbientOcclusion_ScalableAmbientOcclusion, path: \"ShaderLibrary/Lighting/AmbientOcclusion/ScalableAmbientOcclusion.glsl\" },\n { source: Lighting_Light, path: \"ShaderLibrary/Lighting/Light.glsl\" },\n { source: Noise_NoiseCommon, path: \"ShaderLibrary/Noise/NoiseCommon.glsl\" },\n { source: Noise_NoiseSimplexGrad, path: \"ShaderLibrary/Noise/NoiseSimplexGrad.glsl\" },\n { source: PBR_BSDF, path: \"ShaderLibrary/PBR/BSDF.glsl\" },\n { source: PBR_ForwardPassPBR, path: \"ShaderLibrary/PBR/ForwardPassPBR.glsl\" },\n { source: PBR_FragmentPBR, path: \"ShaderLibrary/PBR/FragmentPBR.glsl\" },\n { source: PBR_LightDirectPBR, path: \"ShaderLibrary/PBR/LightDirectPBR.glsl\" },\n { source: PBR_LightIndirectFunctions, path: \"ShaderLibrary/PBR/LightIndirectFunctions.glsl\" },\n { source: PBR_LightIndirectPBR, path: \"ShaderLibrary/PBR/LightIndirectPBR.glsl\" },\n { source: PBR_ReflectionLobe, path: \"ShaderLibrary/PBR/ReflectionLobe.glsl\" },\n { source: PBR_Refraction, path: \"ShaderLibrary/PBR/Refraction.glsl\" },\n { source: PBR_VaryingsPBR, path: \"ShaderLibrary/PBR/VaryingsPBR.glsl\" },\n { source: PBR_VertexPBR, path: \"ShaderLibrary/PBR/VertexPBR.glsl\" },\n { source: Particle_Billboard_HorizontalBillboard, path: \"ShaderLibrary/Particle/Billboard/HorizontalBillboard.glsl\" },\n { source: Particle_Billboard_SphereBillboard, path: \"ShaderLibrary/Particle/Billboard/SphereBillboard.glsl\" },\n { source: Particle_Billboard_StretchedBillboard, path: \"ShaderLibrary/Particle/Billboard/StretchedBillboard.glsl\" },\n { source: Particle_Billboard_VerticalBillboard, path: \"ShaderLibrary/Particle/Billboard/VerticalBillboard.glsl\" },\n { source: Particle_Module_ColorOverLifetime, path: \"ShaderLibrary/Particle/Module/ColorOverLifetime.glsl\" },\n { source: Particle_Module_ForceOverLifetime, path: \"ShaderLibrary/Particle/Module/ForceOverLifetime.glsl\" },\n { source: Particle_Module_LimitVelocityOverLifetime, path: \"ShaderLibrary/Particle/Module/LimitVelocityOverLifetime.glsl\" },\n { source: Particle_Module_NoiseModule, path: \"ShaderLibrary/Particle/Module/NoiseModule.glsl\" },\n { source: Particle_Module_RotationOverLifetime, path: \"ShaderLibrary/Particle/Module/RotationOverLifetime.glsl\" },\n { source: Particle_Module_SizeOverLifetime, path: \"ShaderLibrary/Particle/Module/SizeOverLifetime.glsl\" },\n { source: Particle_Module_TextureSheetAnimation, path: \"ShaderLibrary/Particle/Module/TextureSheetAnimation.glsl\" },\n { source: Particle_Module_VelocityOverLifetime, path: \"ShaderLibrary/Particle/Module/VelocityOverLifetime.glsl\" },\n { source: Particle_ParticleCommon, path: \"ShaderLibrary/Particle/ParticleCommon.glsl\" },\n { source: Particle_ParticleFeedback, path: \"ShaderLibrary/Particle/ParticleFeedback.glsl\" },\n { source: Particle_ParticleMesh, path: \"ShaderLibrary/Particle/ParticleMesh.glsl\" },\n { source: PostProcess_Bloom_BloomBlurH, path: \"ShaderLibrary/PostProcess/Bloom/BloomBlurH.glsl\" },\n { source: PostProcess_Bloom_BloomBlurV, path: \"ShaderLibrary/PostProcess/Bloom/BloomBlurV.glsl\" },\n { source: PostProcess_Bloom_BloomPrefilter, path: \"ShaderLibrary/PostProcess/Bloom/BloomPrefilter.glsl\" },\n { source: PostProcess_Bloom_BloomUpsample, path: \"ShaderLibrary/PostProcess/Bloom/BloomUpsample.glsl\" },\n { source: PostProcess_FXAA_FXAA3_11, path: \"ShaderLibrary/PostProcess/FXAA/FXAA3_11.glsl\" },\n { source: PostProcess_Filtering, path: \"ShaderLibrary/PostProcess/Filtering.glsl\" },\n { source: PostProcess_FinalAntiAliasing, path: \"ShaderLibrary/PostProcess/FinalAntiAliasing.glsl\" },\n { source: PostProcess_FinalSRGB, path: \"ShaderLibrary/PostProcess/FinalSRGB.glsl\" },\n { source: PostProcess_PostCommon, path: \"ShaderLibrary/PostProcess/PostCommon.glsl\" },\n { source: PostProcess_Tonemapping_ACES_ColorTransform, path: \"ShaderLibrary/PostProcess/Tonemapping/ACES/ColorTransform.glsl\" },\n { source: PostProcess_Tonemapping_ACES_ODT, path: \"ShaderLibrary/PostProcess/Tonemapping/ACES/ODT.glsl\" },\n { source: PostProcess_Tonemapping_ACES_RRT, path: \"ShaderLibrary/PostProcess/Tonemapping/ACES/RRT.glsl\" },\n { source: PostProcess_Tonemapping_ACES_Tonescale, path: \"ShaderLibrary/PostProcess/Tonemapping/ACES/Tonescale.glsl\" },\n { source: PostProcess_Tonemapping_ACESTonemapping, path: \"ShaderLibrary/PostProcess/Tonemapping/ACESTonemapping.glsl\" },\n { source: PostProcess_Tonemapping_NeutralTonemapping, path: \"ShaderLibrary/PostProcess/Tonemapping/NeutralTonemapping.glsl\" },\n { source: PostProcess_UberPost, path: \"ShaderLibrary/PostProcess/UberPost.glsl\" },\n { source: Shadow_Shadow, path: \"ShaderLibrary/Shadow/Shadow.glsl\" },\n { source: Shadow_ShadowSampleTent, path: \"ShaderLibrary/Shadow/ShadowSampleTent.glsl\" },\n { source: Skin_BlendShape, path: \"ShaderLibrary/Skin/BlendShape.glsl\" },\n { source: Skin_Skin, path: \"ShaderLibrary/Skin/Skin.glsl\" },\n];\n","// Auto-generated by shader-compiler-precompile --emit-sources — do not edit.\n\nimport _2D_Sprite from \"./2D/Sprite.shader\";\nimport _2D_SpriteMask from \"./2D/SpriteMask.shader\";\nimport _2D_Text from \"./2D/Text.shader\";\nimport _2D_UIDefault from \"./2D/UIDefault.shader\";\nimport BlinnPhong from \"./BlinnPhong.shader\";\nimport Blit_Blit from \"./Blit/Blit.shader\";\nimport Blit_BlitScreen from \"./Blit/BlitScreen.shader\";\nimport Effect_Particle from \"./Effect/Particle.shader\";\nimport Effect_ParticleFeedback from \"./Effect/ParticleFeedback.shader\";\nimport Effect_Trail from \"./Effect/Trail.shader\";\nimport Lighting_ScalableAmbientOcclusion from \"./Lighting/ScalableAmbientOcclusion.shader\";\nimport PBR from \"./PBR.shader\";\nimport Pipeline_DepthOnly from \"./Pipeline/DepthOnly.shader\";\nimport Pipeline_ShadowCaster from \"./Pipeline/ShadowCaster.shader\";\nimport PostProcess_Bloom from \"./PostProcess/Bloom.shader\";\nimport PostProcess_FinalAntiAliasing from \"./PostProcess/FinalAntiAliasing.shader\";\nimport PostProcess_FinalSRGB from \"./PostProcess/FinalSRGB.shader\";\nimport PostProcess_Uber from \"./PostProcess/Uber.shader\";\nimport Sky_BackgroundTexture from \"./Sky/BackgroundTexture.shader\";\nimport Sky_SkyProcedural from \"./Sky/SkyProcedural.shader\";\nimport Sky_Skybox from \"./Sky/Skybox.shader\";\nimport Unlit from \"./Unlit.shader\";\n\nexport interface IShaderSource {\n path: string;\n source: string;\n}\n\n// prettier-ignore\nexport const shaders: IShaderSource[] = [\n { source: _2D_Sprite, path: \"Shaders/2D/Sprite.shader\" },\n { source: _2D_SpriteMask, path: \"Shaders/2D/SpriteMask.shader\" },\n { source: _2D_Text, path: \"Shaders/2D/Text.shader\" },\n { source: _2D_UIDefault, path: \"Shaders/2D/UIDefault.shader\" },\n { source: BlinnPhong, path: \"Shaders/BlinnPhong.shader\" },\n { source: Blit_Blit, path: \"Shaders/Blit/Blit.shader\" },\n { source: Blit_BlitScreen, path: \"Shaders/Blit/BlitScreen.shader\" },\n { source: Effect_Particle, path: \"Shaders/Effect/Particle.shader\" },\n { source: Effect_ParticleFeedback, path: \"Shaders/Effect/ParticleFeedback.shader\" },\n { source: Effect_Trail, path: \"Shaders/Effect/Trail.shader\" },\n { source: Lighting_ScalableAmbientOcclusion, path: \"Shaders/Lighting/ScalableAmbientOcclusion.shader\" },\n { source: PBR, path: \"Shaders/PBR.shader\" },\n { source: Pipeline_DepthOnly, path: \"Shaders/Pipeline/DepthOnly.shader\" },\n { source: Pipeline_ShadowCaster, path: \"Shaders/Pipeline/ShadowCaster.shader\" },\n { source: PostProcess_Bloom, path: \"Shaders/PostProcess/Bloom.shader\" },\n { source: PostProcess_FinalAntiAliasing, path: \"Shaders/PostProcess/FinalAntiAliasing.shader\" },\n { source: PostProcess_FinalSRGB, path: \"Shaders/PostProcess/FinalSRGB.shader\" },\n { source: PostProcess_Uber, path: \"Shaders/PostProcess/Uber.shader\" },\n { source: Sky_BackgroundTexture, path: \"Shaders/Sky/BackgroundTexture.shader\" },\n { source: Sky_SkyProcedural, path: \"Shaders/Sky/SkyProcedural.shader\" },\n { source: Sky_Skybox, path: \"Shaders/Sky/Skybox.shader\" },\n { source: Unlit, path: \"Shaders/Unlit.shader\" },\n];\n"],"names":["shaderLibrary","source","BlinnPhong_ForwardPassBlinnPhong","path","BlinnPhong_MobileBlinnPhong","Blit_BlitVertex","Common_Attributes","Common_Common","Common_Fog","Common_Normal","Common_Transform","Lighting_AmbientOcclusion_BilateralBlur","Lighting_AmbientOcclusion_ScalableAmbientOcclusion","Lighting_Light","Noise_NoiseCommon","Noise_NoiseSimplexGrad","PBR_BSDF","PBR_ForwardPassPBR","PBR_FragmentPBR","PBR_LightDirectPBR","PBR_LightIndirectFunctions","PBR_LightIndirectPBR","PBR_ReflectionLobe","PBR_Refraction","PBR_VaryingsPBR","PBR_VertexPBR","Particle_Billboard_HorizontalBillboard","Particle_Billboard_SphereBillboard","Particle_Billboard_StretchedBillboard","Particle_Billboard_VerticalBillboard","Particle_Module_ColorOverLifetime","Particle_Module_ForceOverLifetime","Particle_Module_LimitVelocityOverLifetime","Particle_Module_NoiseModule","Particle_Module_RotationOverLifetime","Particle_Module_SizeOverLifetime","Particle_Module_TextureSheetAnimation","Particle_Module_VelocityOverLifetime","Particle_ParticleCommon","Particle_ParticleFeedback","Particle_ParticleMesh","PostProcess_Bloom_BloomBlurH","PostProcess_Bloom_BloomBlurV","PostProcess_Bloom_BloomPrefilter","PostProcess_Bloom_BloomUpsample","PostProcess_FXAA_FXAA3_11","PostProcess_Filtering","PostProcess_FinalAntiAliasing","PostProcess_FinalSRGB","PostProcess_PostCommon","PostProcess_Tonemapping_ACES_ColorTransform","PostProcess_Tonemapping_ACES_ODT","PostProcess_Tonemapping_ACES_RRT","PostProcess_Tonemapping_ACES_Tonescale","PostProcess_Tonemapping_ACESTonemapping","PostProcess_Tonemapping_NeutralTonemapping","PostProcess_UberPost","Shadow_Shadow","Shadow_ShadowSampleTent","Skin_BlendShape","Skin_Skin","shaders","_2D_Sprite","_2D_SpriteMask","_2D_Text","_2D_UIDefault","BlinnPhong","Blit_Blit","Blit_BlitScreen","Effect_Particle","Effect_ParticleFeedback","Effect_Trail","Lighting_ScalableAmbientOcclusion","PBR","Pipeline_DepthOnly","Pipeline_ShadowCaster","PostProcess_Bloom","PostProcess_Uber","Sky_BackgroundTexture","Sky_SkyProcedural","Sky_Skybox","Unlit"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sources.module.js","sources":["../src/ShaderLibrary/index.ts","../src/Shaders/index.ts"],"sourcesContent":["// Auto-generated by shader-compiler-precompile --emit-sources — do not edit.\n\nimport type { IShaderSource } from \"../Shaders\";\nimport BlinnPhong_ForwardPassBlinnPhong from \"./BlinnPhong/ForwardPassBlinnPhong.glsl\";\nimport BlinnPhong_MobileBlinnPhong from \"./BlinnPhong/MobileBlinnPhong.glsl\";\nimport Blit_BlitVertex from \"./Blit/BlitVertex.glsl\";\nimport Common_Attributes from \"./Common/Attributes.glsl\";\nimport Common_Common from \"./Common/Common.glsl\";\nimport Common_Fog from \"./Common/Fog.glsl\";\nimport Common_Normal from \"./Common/Normal.glsl\";\nimport Common_Transform from \"./Common/Transform.glsl\";\nimport Lighting_AmbientOcclusion_BilateralBlur from \"./Lighting/AmbientOcclusion/BilateralBlur.glsl\";\nimport Lighting_AmbientOcclusion_ScalableAmbientOcclusion from \"./Lighting/AmbientOcclusion/ScalableAmbientOcclusion.glsl\";\nimport Lighting_Light from \"./Lighting/Light.glsl\";\nimport Noise_NoiseCommon from \"./Noise/NoiseCommon.glsl\";\nimport Noise_NoiseSimplexGrad from \"./Noise/NoiseSimplexGrad.glsl\";\nimport PBR_BSDF from \"./PBR/BSDF.glsl\";\nimport PBR_ForwardPassPBR from \"./PBR/ForwardPassPBR.glsl\";\nimport PBR_FragmentPBR from \"./PBR/FragmentPBR.glsl\";\nimport PBR_LightDirectPBR from \"./PBR/LightDirectPBR.glsl\";\nimport PBR_LightIndirectFunctions from \"./PBR/LightIndirectFunctions.glsl\";\nimport PBR_LightIndirectPBR from \"./PBR/LightIndirectPBR.glsl\";\nimport PBR_ReflectionLobe from \"./PBR/ReflectionLobe.glsl\";\nimport PBR_Refraction from \"./PBR/Refraction.glsl\";\nimport PBR_VaryingsPBR from \"./PBR/VaryingsPBR.glsl\";\nimport PBR_VertexPBR from \"./PBR/VertexPBR.glsl\";\nimport Particle_Billboard_HorizontalBillboard from \"./Particle/Billboard/HorizontalBillboard.glsl\";\nimport Particle_Billboard_SphereBillboard from \"./Particle/Billboard/SphereBillboard.glsl\";\nimport Particle_Billboard_StretchedBillboard from \"./Particle/Billboard/StretchedBillboard.glsl\";\nimport Particle_Billboard_VerticalBillboard from \"./Particle/Billboard/VerticalBillboard.glsl\";\nimport Particle_Module_ColorOverLifetime from \"./Particle/Module/ColorOverLifetime.glsl\";\nimport Particle_Module_ForceOverLifetime from \"./Particle/Module/ForceOverLifetime.glsl\";\nimport Particle_Module_LimitVelocityOverLifetime from \"./Particle/Module/LimitVelocityOverLifetime.glsl\";\nimport Particle_Module_NoiseModule from \"./Particle/Module/NoiseModule.glsl\";\nimport Particle_Module_RotationOverLifetime from \"./Particle/Module/RotationOverLifetime.glsl\";\nimport Particle_Module_SizeOverLifetime from \"./Particle/Module/SizeOverLifetime.glsl\";\nimport Particle_Module_TextureSheetAnimation from \"./Particle/Module/TextureSheetAnimation.glsl\";\nimport Particle_Module_VelocityOverLifetime from \"./Particle/Module/VelocityOverLifetime.glsl\";\nimport Particle_ParticleCommon from \"./Particle/ParticleCommon.glsl\";\nimport Particle_ParticleFeedback from \"./Particle/ParticleFeedback.glsl\";\nimport Particle_ParticleMesh from \"./Particle/ParticleMesh.glsl\";\nimport Particle_ParticleVert from \"./Particle/ParticleVert.glsl\";\nimport PostProcess_Bloom_BloomBlurH from \"./PostProcess/Bloom/BloomBlurH.glsl\";\nimport PostProcess_Bloom_BloomBlurV from \"./PostProcess/Bloom/BloomBlurV.glsl\";\nimport PostProcess_Bloom_BloomPrefilter from \"./PostProcess/Bloom/BloomPrefilter.glsl\";\nimport PostProcess_Bloom_BloomUpsample from \"./PostProcess/Bloom/BloomUpsample.glsl\";\nimport PostProcess_FXAA_FXAA3_11 from \"./PostProcess/FXAA/FXAA3_11.glsl\";\nimport PostProcess_Filtering from \"./PostProcess/Filtering.glsl\";\nimport PostProcess_FinalAntiAliasing from \"./PostProcess/FinalAntiAliasing.glsl\";\nimport PostProcess_FinalSRGB from \"./PostProcess/FinalSRGB.glsl\";\nimport PostProcess_PostCommon from \"./PostProcess/PostCommon.glsl\";\nimport PostProcess_Tonemapping_ACES_ColorTransform from \"./PostProcess/Tonemapping/ACES/ColorTransform.glsl\";\nimport PostProcess_Tonemapping_ACES_ODT from \"./PostProcess/Tonemapping/ACES/ODT.glsl\";\nimport PostProcess_Tonemapping_ACES_RRT from \"./PostProcess/Tonemapping/ACES/RRT.glsl\";\nimport PostProcess_Tonemapping_ACES_Tonescale from \"./PostProcess/Tonemapping/ACES/Tonescale.glsl\";\nimport PostProcess_Tonemapping_ACESTonemapping from \"./PostProcess/Tonemapping/ACESTonemapping.glsl\";\nimport PostProcess_Tonemapping_NeutralTonemapping from \"./PostProcess/Tonemapping/NeutralTonemapping.glsl\";\nimport PostProcess_UberPost from \"./PostProcess/UberPost.glsl\";\nimport Shadow_Shadow from \"./Shadow/Shadow.glsl\";\nimport Shadow_ShadowSampleTent from \"./Shadow/ShadowSampleTent.glsl\";\nimport Skin_BlendShape from \"./Skin/BlendShape.glsl\";\nimport Skin_Skin from \"./Skin/Skin.glsl\";\n\n// prettier-ignore\nexport const shaderLibrary: IShaderSource[] = [\n { source: BlinnPhong_ForwardPassBlinnPhong, path: \"ShaderLibrary/BlinnPhong/ForwardPassBlinnPhong.glsl\" },\n { source: BlinnPhong_MobileBlinnPhong, path: \"ShaderLibrary/BlinnPhong/MobileBlinnPhong.glsl\" },\n { source: Blit_BlitVertex, path: \"ShaderLibrary/Blit/BlitVertex.glsl\" },\n { source: Common_Attributes, path: \"ShaderLibrary/Common/Attributes.glsl\" },\n { source: Common_Common, path: \"ShaderLibrary/Common/Common.glsl\" },\n { source: Common_Fog, path: \"ShaderLibrary/Common/Fog.glsl\" },\n { source: Common_Normal, path: \"ShaderLibrary/Common/Normal.glsl\" },\n { source: Common_Transform, path: \"ShaderLibrary/Common/Transform.glsl\" },\n { source: Lighting_AmbientOcclusion_BilateralBlur, path: \"ShaderLibrary/Lighting/AmbientOcclusion/BilateralBlur.glsl\" },\n { source: Lighting_AmbientOcclusion_ScalableAmbientOcclusion, path: \"ShaderLibrary/Lighting/AmbientOcclusion/ScalableAmbientOcclusion.glsl\" },\n { source: Lighting_Light, path: \"ShaderLibrary/Lighting/Light.glsl\" },\n { source: Noise_NoiseCommon, path: \"ShaderLibrary/Noise/NoiseCommon.glsl\" },\n { source: Noise_NoiseSimplexGrad, path: \"ShaderLibrary/Noise/NoiseSimplexGrad.glsl\" },\n { source: PBR_BSDF, path: \"ShaderLibrary/PBR/BSDF.glsl\" },\n { source: PBR_ForwardPassPBR, path: \"ShaderLibrary/PBR/ForwardPassPBR.glsl\" },\n { source: PBR_FragmentPBR, path: \"ShaderLibrary/PBR/FragmentPBR.glsl\" },\n { source: PBR_LightDirectPBR, path: \"ShaderLibrary/PBR/LightDirectPBR.glsl\" },\n { source: PBR_LightIndirectFunctions, path: \"ShaderLibrary/PBR/LightIndirectFunctions.glsl\" },\n { source: PBR_LightIndirectPBR, path: \"ShaderLibrary/PBR/LightIndirectPBR.glsl\" },\n { source: PBR_ReflectionLobe, path: \"ShaderLibrary/PBR/ReflectionLobe.glsl\" },\n { source: PBR_Refraction, path: \"ShaderLibrary/PBR/Refraction.glsl\" },\n { source: PBR_VaryingsPBR, path: \"ShaderLibrary/PBR/VaryingsPBR.glsl\" },\n { source: PBR_VertexPBR, path: \"ShaderLibrary/PBR/VertexPBR.glsl\" },\n { source: Particle_Billboard_HorizontalBillboard, path: \"ShaderLibrary/Particle/Billboard/HorizontalBillboard.glsl\" },\n { source: Particle_Billboard_SphereBillboard, path: \"ShaderLibrary/Particle/Billboard/SphereBillboard.glsl\" },\n { source: Particle_Billboard_StretchedBillboard, path: \"ShaderLibrary/Particle/Billboard/StretchedBillboard.glsl\" },\n { source: Particle_Billboard_VerticalBillboard, path: \"ShaderLibrary/Particle/Billboard/VerticalBillboard.glsl\" },\n { source: Particle_Module_ColorOverLifetime, path: \"ShaderLibrary/Particle/Module/ColorOverLifetime.glsl\" },\n { source: Particle_Module_ForceOverLifetime, path: \"ShaderLibrary/Particle/Module/ForceOverLifetime.glsl\" },\n { source: Particle_Module_LimitVelocityOverLifetime, path: \"ShaderLibrary/Particle/Module/LimitVelocityOverLifetime.glsl\" },\n { source: Particle_Module_NoiseModule, path: \"ShaderLibrary/Particle/Module/NoiseModule.glsl\" },\n { source: Particle_Module_RotationOverLifetime, path: \"ShaderLibrary/Particle/Module/RotationOverLifetime.glsl\" },\n { source: Particle_Module_SizeOverLifetime, path: \"ShaderLibrary/Particle/Module/SizeOverLifetime.glsl\" },\n { source: Particle_Module_TextureSheetAnimation, path: \"ShaderLibrary/Particle/Module/TextureSheetAnimation.glsl\" },\n { source: Particle_Module_VelocityOverLifetime, path: \"ShaderLibrary/Particle/Module/VelocityOverLifetime.glsl\" },\n { source: Particle_ParticleCommon, path: \"ShaderLibrary/Particle/ParticleCommon.glsl\" },\n { source: Particle_ParticleFeedback, path: \"ShaderLibrary/Particle/ParticleFeedback.glsl\" },\n { source: Particle_ParticleMesh, path: \"ShaderLibrary/Particle/ParticleMesh.glsl\" },\n { source: Particle_ParticleVert, path: \"ShaderLibrary/Particle/ParticleVert.glsl\" },\n { source: PostProcess_Bloom_BloomBlurH, path: \"ShaderLibrary/PostProcess/Bloom/BloomBlurH.glsl\" },\n { source: PostProcess_Bloom_BloomBlurV, path: \"ShaderLibrary/PostProcess/Bloom/BloomBlurV.glsl\" },\n { source: PostProcess_Bloom_BloomPrefilter, path: \"ShaderLibrary/PostProcess/Bloom/BloomPrefilter.glsl\" },\n { source: PostProcess_Bloom_BloomUpsample, path: \"ShaderLibrary/PostProcess/Bloom/BloomUpsample.glsl\" },\n { source: PostProcess_FXAA_FXAA3_11, path: \"ShaderLibrary/PostProcess/FXAA/FXAA3_11.glsl\" },\n { source: PostProcess_Filtering, path: \"ShaderLibrary/PostProcess/Filtering.glsl\" },\n { source: PostProcess_FinalAntiAliasing, path: \"ShaderLibrary/PostProcess/FinalAntiAliasing.glsl\" },\n { source: PostProcess_FinalSRGB, path: \"ShaderLibrary/PostProcess/FinalSRGB.glsl\" },\n { source: PostProcess_PostCommon, path: \"ShaderLibrary/PostProcess/PostCommon.glsl\" },\n { source: PostProcess_Tonemapping_ACES_ColorTransform, path: \"ShaderLibrary/PostProcess/Tonemapping/ACES/ColorTransform.glsl\" },\n { source: PostProcess_Tonemapping_ACES_ODT, path: \"ShaderLibrary/PostProcess/Tonemapping/ACES/ODT.glsl\" },\n { source: PostProcess_Tonemapping_ACES_RRT, path: \"ShaderLibrary/PostProcess/Tonemapping/ACES/RRT.glsl\" },\n { source: PostProcess_Tonemapping_ACES_Tonescale, path: \"ShaderLibrary/PostProcess/Tonemapping/ACES/Tonescale.glsl\" },\n { source: PostProcess_Tonemapping_ACESTonemapping, path: \"ShaderLibrary/PostProcess/Tonemapping/ACESTonemapping.glsl\" },\n { source: PostProcess_Tonemapping_NeutralTonemapping, path: \"ShaderLibrary/PostProcess/Tonemapping/NeutralTonemapping.glsl\" },\n { source: PostProcess_UberPost, path: \"ShaderLibrary/PostProcess/UberPost.glsl\" },\n { source: Shadow_Shadow, path: \"ShaderLibrary/Shadow/Shadow.glsl\" },\n { source: Shadow_ShadowSampleTent, path: \"ShaderLibrary/Shadow/ShadowSampleTent.glsl\" },\n { source: Skin_BlendShape, path: \"ShaderLibrary/Skin/BlendShape.glsl\" },\n { source: Skin_Skin, path: \"ShaderLibrary/Skin/Skin.glsl\" },\n];\n","// Auto-generated by shader-compiler-precompile --emit-sources — do not edit.\n\nimport _2D_Sprite from \"./2D/Sprite.shader\";\nimport _2D_SpriteMask from \"./2D/SpriteMask.shader\";\nimport _2D_Text from \"./2D/Text.shader\";\nimport _2D_UIDefault from \"./2D/UIDefault.shader\";\nimport BlinnPhong from \"./BlinnPhong.shader\";\nimport Blit_Blit from \"./Blit/Blit.shader\";\nimport Blit_BlitScreen from \"./Blit/BlitScreen.shader\";\nimport Effect_Particle from \"./Effect/Particle.shader\";\nimport Effect_ParticleFeedback from \"./Effect/ParticleFeedback.shader\";\nimport Effect_Trail from \"./Effect/Trail.shader\";\nimport Lighting_ScalableAmbientOcclusion from \"./Lighting/ScalableAmbientOcclusion.shader\";\nimport PBR from \"./PBR.shader\";\nimport Pipeline_DepthOnly from \"./Pipeline/DepthOnly.shader\";\nimport Pipeline_ShadowCaster from \"./Pipeline/ShadowCaster.shader\";\nimport PostProcess_Bloom from \"./PostProcess/Bloom.shader\";\nimport PostProcess_FinalAntiAliasing from \"./PostProcess/FinalAntiAliasing.shader\";\nimport PostProcess_FinalSRGB from \"./PostProcess/FinalSRGB.shader\";\nimport PostProcess_Uber from \"./PostProcess/Uber.shader\";\nimport Sky_BackgroundTexture from \"./Sky/BackgroundTexture.shader\";\nimport Sky_SkyProcedural from \"./Sky/SkyProcedural.shader\";\nimport Sky_Skybox from \"./Sky/Skybox.shader\";\nimport Unlit from \"./Unlit.shader\";\n\nexport interface IShaderSource {\n path: string;\n source: string;\n}\n\n// prettier-ignore\nexport const shaders: IShaderSource[] = [\n { source: _2D_Sprite, path: \"Shaders/2D/Sprite.shader\" },\n { source: _2D_SpriteMask, path: \"Shaders/2D/SpriteMask.shader\" },\n { source: _2D_Text, path: \"Shaders/2D/Text.shader\" },\n { source: _2D_UIDefault, path: \"Shaders/2D/UIDefault.shader\" },\n { source: BlinnPhong, path: \"Shaders/BlinnPhong.shader\" },\n { source: Blit_Blit, path: \"Shaders/Blit/Blit.shader\" },\n { source: Blit_BlitScreen, path: \"Shaders/Blit/BlitScreen.shader\" },\n { source: Effect_Particle, path: \"Shaders/Effect/Particle.shader\" },\n { source: Effect_ParticleFeedback, path: \"Shaders/Effect/ParticleFeedback.shader\" },\n { source: Effect_Trail, path: \"Shaders/Effect/Trail.shader\" },\n { source: Lighting_ScalableAmbientOcclusion, path: \"Shaders/Lighting/ScalableAmbientOcclusion.shader\" },\n { source: PBR, path: \"Shaders/PBR.shader\" },\n { source: Pipeline_DepthOnly, path: \"Shaders/Pipeline/DepthOnly.shader\" },\n { source: Pipeline_ShadowCaster, path: \"Shaders/Pipeline/ShadowCaster.shader\" },\n { source: PostProcess_Bloom, path: \"Shaders/PostProcess/Bloom.shader\" },\n { source: PostProcess_FinalAntiAliasing, path: \"Shaders/PostProcess/FinalAntiAliasing.shader\" },\n { source: PostProcess_FinalSRGB, path: \"Shaders/PostProcess/FinalSRGB.shader\" },\n { source: PostProcess_Uber, path: \"Shaders/PostProcess/Uber.shader\" },\n { source: Sky_BackgroundTexture, path: \"Shaders/Sky/BackgroundTexture.shader\" },\n { source: Sky_SkyProcedural, path: \"Shaders/Sky/SkyProcedural.shader\" },\n { source: Sky_Skybox, path: \"Shaders/Sky/Skybox.shader\" },\n { source: Unlit, path: \"Shaders/Unlit.shader\" },\n];\n"],"names":["shaderLibrary","source","BlinnPhong_ForwardPassBlinnPhong","path","BlinnPhong_MobileBlinnPhong","Blit_BlitVertex","Common_Attributes","Common_Common","Common_Fog","Common_Normal","Common_Transform","Lighting_AmbientOcclusion_BilateralBlur","Lighting_AmbientOcclusion_ScalableAmbientOcclusion","Lighting_Light","Noise_NoiseCommon","Noise_NoiseSimplexGrad","PBR_BSDF","PBR_ForwardPassPBR","PBR_FragmentPBR","PBR_LightDirectPBR","PBR_LightIndirectFunctions","PBR_LightIndirectPBR","PBR_ReflectionLobe","PBR_Refraction","PBR_VaryingsPBR","PBR_VertexPBR","Particle_Billboard_HorizontalBillboard","Particle_Billboard_SphereBillboard","Particle_Billboard_StretchedBillboard","Particle_Billboard_VerticalBillboard","Particle_Module_ColorOverLifetime","Particle_Module_ForceOverLifetime","Particle_Module_LimitVelocityOverLifetime","Particle_Module_NoiseModule","Particle_Module_RotationOverLifetime","Particle_Module_SizeOverLifetime","Particle_Module_TextureSheetAnimation","Particle_Module_VelocityOverLifetime","Particle_ParticleCommon","Particle_ParticleFeedback","Particle_ParticleMesh","Particle_ParticleVert","PostProcess_Bloom_BloomBlurH","PostProcess_Bloom_BloomBlurV","PostProcess_Bloom_BloomPrefilter","PostProcess_Bloom_BloomUpsample","PostProcess_FXAA_FXAA3_11","PostProcess_Filtering","PostProcess_FinalAntiAliasing","PostProcess_FinalSRGB","PostProcess_PostCommon","PostProcess_Tonemapping_ACES_ColorTransform","PostProcess_Tonemapping_ACES_ODT","PostProcess_Tonemapping_ACES_RRT","PostProcess_Tonemapping_ACES_Tonescale","PostProcess_Tonemapping_ACESTonemapping","PostProcess_Tonemapping_NeutralTonemapping","PostProcess_UberPost","Shadow_Shadow","Shadow_ShadowSampleTent","Skin_BlendShape","Skin_Skin","shaders","_2D_Sprite","_2D_SpriteMask","_2D_Text","_2D_UIDefault","BlinnPhong","Blit_Blit","Blit_BlitScreen","Effect_Particle","Effect_ParticleFeedback","Effect_Trail","Lighting_ScalableAmbientOcclusion","PBR","Pipeline_DepthOnly","Pipeline_ShadowCaster","PostProcess_Bloom","PostProcess_Uber","Sky_BackgroundTexture","Sky_SkyProcedural","Sky_Skybox","Unlit"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galacean/engine-shader",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.34",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"name": "Galacean.ShaderFragment"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@galacean/engine-design": "2.0.0-alpha.
|
|
33
|
+
"@galacean/engine-design": "2.0.0-alpha.34"
|
|
34
34
|
},
|
|
35
35
|
"files": [
|
|
36
36
|
"dist/**/*",
|