Browse Source

Use correct packIntColor and unpackIntColor shader functions

borisrp 1 week ago
parent
commit
8e4defc8a0

+ 2 - 2
hrt/prefab/fx/gpuemitter/BaseSimulation.hx

@@ -44,7 +44,7 @@ class BaseSimulation extends ComputeUtils {
 			lifeTime = particleBuffer[computeVar.globalInvocation.x].lifeTime;
 			prevModelView = batchBuffer[computeVar.globalInvocation.x].modelView;
 			particleRandom = particleBuffer[computeVar.globalInvocation.x].random;
-			particleColor = int2rgba(floatBitsToInt(particleBuffer[computeVar.globalInvocation.x].color));
+			particleColor = unpackIntColor(floatBitsToInt(particleBuffer[computeVar.globalInvocation.x].color));
 			relativeTransform = scaleMatrix(((INFINITE || life < lifeTime) ? 1.0 : 0.0) * (computeVar.globalInvocation.x > curCount ? 0.0 : 1.0) * vec3(particleRandom * (maxSize - minSize) + minSize));
 		}
 
@@ -62,7 +62,7 @@ class BaseSimulation extends ComputeUtils {
 			var idx = computeVar.globalInvocation.x;
 			particleBuffer[idx].life = life + dt;
 			particleBuffer[idx].speed = speed;
-			particleBuffer[idx].color = intBitsToFloat(rgba2int(particleColor));
+			particleBuffer[idx].color = intBitsToFloat(packIntColor(particleColor));
 			batchBuffer[idx].modelView = modelView;
 		}
 	}

+ 1 - 1
hrt/prefab/fx/gpuemitter/BaseSpawn.hx

@@ -56,7 +56,7 @@ class BaseSpawn extends ComputeUtils {
 					particleBuffer[idx].life = 0.0;
 					// Keep in memory duration of particle to normalize curve update.
 					particleBuffer[idx].lifeTime = life;
-					particleBuffer[idx].color = intBitsToFloat(rgba2int(particleColor));
+					particleBuffer[idx].color = intBitsToFloat(packIntColor(particleColor));
 				}
 			}
 		}

+ 1 - 1
hrt/prefab/fx/gpuemitter/GPUEmitterObject.hx

@@ -29,7 +29,7 @@ class ParticleShader extends hxsl.Shader {
 				particleLife = particleBuffer[instanceID].life;
 				particleLifeTime = particleBuffer[instanceID].lifeTime;
 				particleRandom = particleBuffer[instanceID].random;
-				particleColor = int2rgba(floatBitsToInt(particleBuffer[instanceID].color));
+				particleColor = unpackIntColor(floatBitsToInt(particleBuffer[instanceID].color));
 			}
 			transformedPosition = transformedPosition * absPos.mat3x4();
 		}

+ 2 - 2
hrt/prefab/fx/gpuemitter/RandomColorSpawn.hx

@@ -12,8 +12,8 @@ class RandomColorSpawnShader extends ComputeUtils {
 		var particleColor : Vec4;
 		function main() {
 			var idx = computeVar.globalInvocation.x;
-			var fromColor = int2rgba(color1);
-			var toColor = int2rgba(color2);
+			var fromColor = unpackIntColor(color1);
+			var toColor = unpackIntColor(color2);
 			particleColor = mix(fromColor, toColor, particleRandom);
 		}
 	}