Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
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);
        }
Пример #9
0
        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);
            }
        }