public static ParticleRenderableComponent GetParticlesCom() { var name = "Particle"; var compiler = new D3DShaderCompilator(null); var vertex = new ShaderInMemoryInfo(name + "Vertex", ShaderStructures + VertexShaderText, compiler.Compile(ShaderStructures + VertexShaderText, "TriangleVS", ShaderStages.Vertex.ToString()), ShaderStages.Vertex.ToString(), "TriangleVS"); //var geometry = new ShaderInMemoryInfo(name + "Geometry", ShaderStructures + GeometryShaderText, // compiler.Compile(ShaderStructures + GeometryShaderText, // "TriangleGS", ShaderStages.Geometry.ToString()), // ShaderStages.Geometry.ToString(), "TriangleGS"); var pixel = new ShaderInMemoryInfo(name + "Pixel", ShaderStructures + PixelShaderText, compiler.Compile(ShaderStructures + PixelShaderText, "TrianglePS", ShaderStages.Fragment.ToString()), ShaderStages.Fragment.ToString(), "TrianglePS"); var pass = new ShaderTechniquePass(new IShaderInfo[] { vertex, /*geometry,*/ pixel }); var shader = new ParticleShaderSpecification(new[] { pass }); return(new ParticleRenderableComponent(shader, new ParticleDeviceBufferesUpdater(shader))); }
public ParticleDeviceBufferesUpdater(ParticleShaderSpecification shader) : base(shader) { particles = new Particle[PARTICLES_COUNT]; var random = new System.Random(); for (int i = 0; i < PARTICLES_COUNT; i++) { particles[i].Position = random.NextVector3(new Vector3(-30f, -30f, -30f), new Vector3(30f, 30f, 30f)); } }