public override void Render(GPUParticleSystem system) { material.SetFloat("_Speed", speed); material.SetFloat("_Count", system.Count); if (side < 0f) { side = Mathf.Pow(system.Count, 1f / 3f); material.SetVector("_Side", new Vector2(side, 1f / side)); // offset = Vector3.one * (side * 0.5f); offset = Vector3.one * (side * 0.5f) + new Vector3(Random.Range(-0.25f, 0.25f) * side, Random.Range(-0.25f, 0.25f) * side, Random.Range(-0.25f, 0.25f) * side); int len = Mathf.FloorToInt(side); flags = new bool[len, len, len]; SetFlag(offset, true); } material.SetFloat("_Size", system.Size); material.SetVector("_Offset", -(offset + new Vector3(0f, 0f, depth + side * 0.25f))); var position = system.GetProp("_Position"); var rotation = system.GetProp("_Rotation"); material.SetTexture(position.Key, position.FBO.ReadTex); material.SetTexture(rotation.Key, rotation.FBO.ReadTex); Blit(position.FBO, material, 0); Blit(rotation.FBO, material, 1); }
public override void Render(GPUParticleSystem system) { material.SetFloat("_Count", system.Count); float side = Mathf.Sqrt(system.Count); material.SetFloat("_Side", side); material.SetFloat("_Unit", 1f / side); material.SetFloat("_Size", system.Size); var offset = offsets[current % offsets.Count]; material.SetVector("_Center", new Vector3(0f, offset, Camera.main.transform.position.z + distance)); var position = system.GetProp("_Position"); var rotation = system.GetProp("_Rotation"); if (position != null && rotation != null) { material.SetTexture(position.Key, position.FBO.ReadTex); Blit(position.FBO, material, 0); material.SetTexture(rotation.Key, rotation.FBO.ReadTex); Blit(rotation.FBO, material, 1); } }
public override void Render(GPUParticleSystem system) { var d = data[index % data.Count]; texture = d.texture; material.SetTexture("_MainTex", texture); var ratio = 1f * texture.width / texture.height; var scale = 1f / d.scale; material.SetFloat("_Ratio", ratio); material.SetFloat("_Scale", scale); material.SetVector("_Offset", new Vector2((1f - scale) * 0.5f, (1f - scale * ratio) * 0.5f)); material.SetFloat("_Count", system.Count); material.SetFloat("_Side", Mathf.Sqrt(system.Count)); material.SetFloat("_Size", system.Size); material.SetFloat("_Depth", Camera.main.transform.position.z + distance); var position = system.GetProp("_Position"); var rotation = system.GetProp("_Rotation"); var color = system.GetProp("_Color"); material.SetTexture(position.Key, position.FBO.ReadTex); Blit(position.FBO, material, 0); material.SetTexture(rotation.Key, rotation.FBO.ReadTex); Blit(rotation.FBO, material, 1); material.SetTexture(color.Key, color.FBO.ReadTex); Blit(color.FBO, material, 2); }
public override void Render(GPUParticleSystem system) { var velocity = system.GetProp("_Velocity"); var position = system.GetProp("_Position"); if (velocity != null && position != null) { material.SetTexture(velocity.Key, velocity.FBO.ReadTex); material.SetTexture(position.Key, position.FBO.ReadTex); Blit(position.FBO, material); } }
public override void Render(GPUParticleSystem system) { var velocity = system.GetProp("_Velocity"); material.SetTexture(velocity.Key, velocity.FBO.ReadTex); material.SetFloat("_T", t); Blit(velocity.FBO, material); }
public override void Render(GPUParticleSystem system) { material.SetFloat("_Count", system.Count); material.SetFloat("_Side", Mathf.Sqrt(system.Count)); material.SetFloat("_Size", system.Size); material.SetVector("_Offset", offset); material.SetFloat("_Depth", Camera.main.transform.position.z + distance); var position = system.GetProp("_Position"); var rotation = system.GetProp("_Rotation"); material.SetTexture(position.Key, position.FBO.ReadTex); material.SetTexture(rotation.Key, rotation.FBO.ReadTex); Blit(position.FBO, material, 0); Blit(rotation.FBO, material, 1); }
public override void Render(GPUParticleSystem system) { var buffer = system.GetProp("_Color"); material.SetTexture(buffer.Key, buffer.FBO.ReadTex); material.SetColor("_Color", color); Blit(buffer.FBO, material, 0); }
public override void Render(GPUParticleSystem system) { int side = Mathf.FloorToInt(Mathf.Sqrt(system.Count)); CheckInit(side, side); var position = system.GetProp("_Position"); var velocity = system.GetProp("_Velocity"); var color = system.GetProp("_Color"); material.SetTexture(position.Key, position.FBO.ReadTex); material.SetTexture(velocity.Key, velocity.FBO.ReadTex); material.SetTexture(color.Key, color.FBO.ReadTex); var matrix = transform.localToWorldMatrix; material.SetMatrix("_Matrix", matrix); Blit(velocity.FBO, material, 0); Blit(color.FBO, material, 1); }
public override void Init(GPUParticleSystem system) { var position = system.GetProp("_Position"); if (position != null) { Blit(position.FBO, material, 0); } var velocity = system.GetProp("_Velocity"); if (velocity != null) { Blit(velocity.FBO, material, 1); } var color = system.GetProp("_Color"); if (color != null) { Blit(color.FBO, material, 2); } }