Forráskód Böngészése

gpu particles bug fixes

ncannasse 8 éve
szülő
commit
0dc0992840
2 módosított fájl, 4 hozzáadás és 3 törlés
  1. 1 1
      h3d/parts/GpuParticles.hx
  2. 3 2
      h3d/shader/GpuParticle.hx

+ 1 - 1
h3d/parts/GpuParticles.hx

@@ -366,7 +366,7 @@ class GpuPartGroup {
 
 
 			var c = ebounds.getCenter();
 			var c = ebounds.getCenter();
 			p.x = p.x * ebounds.xSize + c.x;
 			p.x = p.x * ebounds.xSize + c.x;
-			p.y = p.y * ebounds.xSize + c.y;
+			p.y = p.y * ebounds.ySize + c.y;
 			p.z = p.z * ebounds.zSize + c.z;
 			p.z = p.z * ebounds.zSize + c.z;
 
 
 			v.x = srand();
 			v.x = srand();

+ 3 - 2
h3d/shader/GpuParticle.hx

@@ -89,13 +89,14 @@ class GpuParticle extends hxsl.Shader {
 			var size = (props.uv - 0.5) * current.y.max(0.);
 			var size = (props.uv - 0.5) * current.y.max(0.);
 			var rot = current.x;
 			var rot = current.x;
 			var crot = cos(rot), srot = sin(rot);
 			var crot = cos(rot), srot = sin(rot);
-			var dist = vec2(size.x * crot - size.y * srot, size.x * srot + size.y * crot) * vec2(global.pixelSize.x / global.pixelSize.y, 1);
+			var screenRatio = vec2(global.pixelSize.x / global.pixelSize.y, 1);
+			var dist = vec2(size.x * crot - size.y * srot, size.x * srot + size.y * crot);
 			if( transform3D ) {
 			if( transform3D ) {
 				transformedPosition += vec3(0., dist.x, dist.y) * cameraRotation;
 				transformedPosition += vec3(0., dist.x, dist.y) * cameraRotation;
 				projectedPosition = vec4(transformedPosition, 1) * camera.viewProj;
 				projectedPosition = vec4(transformedPosition, 1) * camera.viewProj;
 			} else {
 			} else {
 				projectedPosition = vec4(transformedPosition, 1) * camera.viewProj;
 				projectedPosition = vec4(transformedPosition, 1) * camera.viewProj;
-				projectedPosition.xy += dist;
+				projectedPosition.xy += dist * screenRatio;
 			}
 			}
 			projectedPosition *= visibility;
 			projectedPosition *= visibility;
 			if( normT < fadeIn )
 			if( normT < fadeIn )