/// <summary> /// Create a label renderer. /// </summary> /// <param name="maxCharCount">Max char count to display for this label. Careful to set this value because greater <paramref name="maxCharCount"/> means more space ocupied in GPU nemory.</param> /// <param name="labelHeight">Label height(in pixels)</param> /// <param name="fontTexture">Use which font to render text?</param> /// <returns></returns> public static LabelRenderer Create(int maxCharCount = 64, int labelHeight = 32, IFontTexture fontTexture = null) { if (fontTexture == null) { fontTexture = FontTexture.Default; } var model = new TextModel(maxCharCount); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources\Label.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources\Label.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", TextModel.strPosition); map.Add("in_UV", TextModel.strUV); var blendState = new BlendState(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.One); var renderer = new LabelRenderer(model, provider, map, blendState); renderer.blendState = blendState; renderer.fontTexture = fontTexture; renderer.LabelHeight = labelHeight; return(renderer); }
/// <summary> /// Create a text renderer. /// </summary> /// <param name="maxCharCount">Max char count to display for this label. Careful to set this value because greater <paramref name="maxCharCount"/> means more space ocupied in GPU nemory.</param> /// <param name="labelHeight">Label height(in pixels)</param> /// <param name="fontTexture">Use which font to render text?</param> /// <returns></returns> public static TextRenderer Create(int maxCharCount = 64, int labelHeight = 32, IFontTexture fontTexture = null) { if (fontTexture == null) { fontTexture = FontTexture.Default; } // FontResource.Default; } var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources.TextModel.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources.TextModel.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("position", TextModel.strPosition); map.Add("uv", TextModel.strUV); var model = new TextModel(maxCharCount); var renderer = new TextRenderer(model, provider, map); renderer.fontTexture = fontTexture; return(renderer); }
public OrderIndependentTransparencyRenderer(IBufferable model, vec3 lengths, string positionName, string normalName) { { var map = new AttributeMap(); map.Add("position", positionName); map.Add("normal", normalName); var build_lists = new ShaderCode[2]; build_lists[0] = new ShaderCode(File.ReadAllText(@"shaders\OIT\build_lists.vert"), ShaderType.VertexShader); build_lists[1] = new ShaderCode(File.ReadAllText(@"shaders\OIT\build_lists.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(build_lists); this.buildListsRenderer = new PickableRenderer(model, provider, map, positionName); } { var map = new AttributeMap(); map.Add("position", positionName); var resolve_lists = new ShaderCode[2]; resolve_lists[0] = new ShaderCode(File.ReadAllText(@"shaders\OIT\resolve_lists.vert"), ShaderType.VertexShader); resolve_lists[1] = new ShaderCode(File.ReadAllText(@"shaders\OIT\resolve_lists.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(resolve_lists); this.resolve_lists = new PickableRenderer(model, provider, map, positionName); } { this.depthTestState = new DepthTestState(false); this.cullFaceState = new CullFaceState(false); } this.ModelSize = lengths; }
/// <summary> /// /// </summary> /// <param name="anchor"></param> /// <param name="margin"></param> /// <param name="size"></param> /// <param name="zNear"></param> /// <param name="zFar"></param> /// <param name="fontTexture"></param> /// <param name="maxCharCount"></param> public UIText( System.Windows.Forms.AnchorStyles anchor, System.Windows.Forms.Padding margin, System.Drawing.Size size, int zNear, int zFar, IFontTexture fontTexture = null, int maxCharCount = 100) : base(anchor, margin, size, zNear, zFar) { if (fontTexture == null) { this.fontTexture = FontTexture.Default; } // FontResource.Default; } else { this.fontTexture = fontTexture; } var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources.TextModel.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources.TextModel.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("position", TextModel.strPosition); map.Add("uv", TextModel.strUV); var model = new TextModel(maxCharCount); var renderer = new Renderer(model, provider, map); this.textModel = model; this.Renderer = renderer; }
public static SimpleComputeRenderer Create() { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\SimpleComputeRenderer\compute.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\SimpleComputeRenderer\compute.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("position", SimpleCompute.strPosition); return(new SimpleComputeRenderer(new SimpleCompute(), provider, map)); }
public static GroundRenderer Create(GroundModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\Ground.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\Ground.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", GroundModel.strPosition); var renderer = new GroundRenderer(model, provider, map); return(renderer); }
public static BillboardRenderer Create(IBufferable model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\billboard.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\billboard.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Positions", BillboardModel.strPosition); var billboardRenderer = new BillboardRenderer(model, provider, map); return(billboardRenderer); }
public static ZeroAttributeRenderer Create() { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\ZeroAttributeRenderer\ZeroAttribute.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\ZeroAttributeRenderer\ZeroAttribute.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap();// no items in this map. var model = new ZeroAttributeModel(DrawMode.TriangleStrip, 0, 4); var renderer = new ZeroAttributeRenderer(model, provider, map, new PointSpriteState()); renderer.ModelSize = new vec3(2.05f, 2.05f, 0.01f); return(renderer); }
public static WellRenderer Create(WellModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\Well.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\Well.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", WellModel.strPosition); map.Add("in_Brightness", WellModel.strBrightness); var renderer = new WellRenderer(model, provider, map); return(renderer); }
// you can replace PointCloudModel with IBufferable in the method's parameter. public static RandomPointsRenderer Create(RandomPointsModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\RandomPoints.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\RandomPoints.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new CSharpGL.AttributeMap(); map.Add("in_Position", RandomPointsModel.position); var renderer = new RandomPointsRenderer(model, provider, map); renderer.ModelSize = model.Lengths; //renderer.stateList.Add(new PointSizeState(10)); return(renderer); }
internal static SimpleRenderer Create(IBufferable model, vec3 lengths, string positionNameInIBufferable) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile(@"Resources\Simple.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile(@"Resources\Simple.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", "position"); map.Add("in_Color", "color"); var renderer = new SimpleRenderer(model, provider, map, positionNameInIBufferable); renderer.ModelSize = lengths; return(renderer); }
public static QuadStripColoredRenderer Create(QuadStripColoredModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\QuadStripColor.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\QuadStripColor.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", QuadStripColoredModel.position); map.Add("in_Color", QuadStripColoredModel.color); var renderer = new QuadStripColoredRenderer(model, provider, map); renderer.quadCount = model.quadCount; return(renderer); }
public static QuadStripRenderer Create(QuadStripModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\QuadStripTexture.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\QuadStripTexture.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", QuadStripModel.position); map.Add("in_TexCoord", QuadStripModel.texCoord); var renderer = new QuadStripRenderer(model, provider, map); return(renderer); }
public static LinesRenderer Create(LinesModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\Lines.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\Lines.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", LinesModel.position); var renderer = new LinesRenderer(model, provider, map); renderer.markerCount = model.markerCount; return(renderer); }
public static HemisphereLightingRenderer Create() { var model = new Teapot(); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\HemisphereLighting\HemisphereLighting.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\HemisphereLighting\HemisphereLighting.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("inPosition", Teapot.strPosition); map.Add("inNormal", Teapot.strNormal); var renderer = new HemisphereLightingRenderer(model, provider, map, Teapot.strPosition); renderer.ModelSize = model.Size; return(renderer); }
public static PointSpriteRenderer Create(int particleCount) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\PointSprite.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\PointSprite.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("position", PointSpriteModel.strposition); var model = new PointSpriteModel(particleCount); var renderer = new PointSpriteRenderer(model, provider, map); renderer.ModelSize = model.Lengths; return(renderer); }
public static BufferBlockRenderer Create() { //var model = new Teapot(); //var model = new ZeroAttributeModel(DrawMode.Triangles, 0, vertexCount); var model = new BufferBlockModel(); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\BufferBlockRenderer\BufferBlock.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\BufferBlockRenderer\BufferBlock.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap();// no vertex attribute. var renderer = new BufferBlockRenderer(model, provider, map); renderer.ModelSize = new vec3(2, 2, 2);// model.Lengths; return(renderer); }
public static OrderDependentTransparencyRenderer Create(IBufferable model, vec3 lengths, string position, string color) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\ODT\Transparent.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\ODT\Transparent.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", position); map.Add("in_Color", color); var renderer = new OrderDependentTransparencyRenderer(model, provider, map, position, new BlendState(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.OneMinusSourceAlpha)); renderer.ModelSize = lengths; return(renderer); }
public static SimplexNoiseRenderer Create() { var model = new Sphere(1, 180, 360); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\SimplexNoise.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\SimplexNoise.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", Sphere.strPosition); var renderer = new SimplexNoiseRenderer(model, provider, map, Sphere.strPosition); renderer.ModelSize = model.Lengths; return(renderer); }
public static CatesianGridRenderer Create(vec3 originalWorldPosition, CatesianGrid grid, Texture codedColorSampler) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\HexahedronGrid.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\HexahedronGrid.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", CatesianGrid.strPosition); map.Add("in_uv", CatesianGrid.strColor); var renderer = new CatesianGridRenderer(originalWorldPosition, grid, provider, map, codedColorSampler); renderer.ModelSize = (grid.DataSource.SourceActiveBounds.MaxPosition - grid.DataSource.SourceActiveBounds.MinPosition).Abs(); renderer.WorldPosition = -grid.DataSource.Position; return(renderer); }
public static TrefoilKnotRenderer Create(TrefoilKnotModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\TrefoilKnotRenderer\TrefoilKnot.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\TrefoilKnotRenderer\TrefoilKnot.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", TrefoilKnotModel.strPosition); map.Add("in_TexCoord", TrefoilKnotModel.strTexCoord); var renderer = new TrefoilKnotRenderer(model, provider, map, TrefoilKnotModel.strPosition); renderer.ModelSize = model.Lengths; return(renderer); }
public static UniformStructRenderer Create() { var model = new Teapot(); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\UniformStructRenderer\UniformStruct.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\UniformStructRenderer\UniformStruct.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("vPos", Teapot.strPosition); map.Add("vColor", Teapot.strColor); var renderer = new UniformStructRenderer(model, provider, map); renderer.ModelSize = model.Size; return(renderer); }
public static EmitNormalLineRenderer Create(IBufferable model, string position, string normal, vec3 lengths) { var shaderCodes = new ShaderCode[3]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\EmitNormalLineRenderer\EmitNormalLine.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\EmitNormalLineRenderer\EmitNormalLine.geom"), ShaderType.GeometryShader); shaderCodes[2] = new ShaderCode(File.ReadAllText(@"shaders\EmitNormalLineRenderer\EmitNormalLine.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", position); map.Add("in_Normal", normal); var renderer = new EmitNormalLineRenderer(model, provider, map, position); renderer.ModelSize = lengths; return(renderer); }
public static WaterBackgroundRenderer Create(int waterPlaneLength) { var model = new Sphere(waterPlaneLength / 2.0f + 0.5f, 20, 80); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\water\Background.vert.glsl"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\water\Background.frag.glsl"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("a_vertex", PlaneModel.strPosition); //map.Add("a_normal", PlaneModel.strNormal); var renderer = new WaterBackgroundRenderer(model, provider, map, new FrontFaceState(FrontFaceMode.CW)); renderer.ModelSize = new vec3(waterPlaneLength + 1, waterPlaneLength + 1, waterPlaneLength + 1); return(renderer); }
public static GreyFilterRenderer Create() { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\GreyFilterRenderer\GreyFilter.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\GreyFilterRenderer\GreyFilter.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("a_vertex", GreyFilterModel.strPosition); map.Add("a_texCoord", GreyFilterModel.strTexCoord); var model = new GreyFilterModel(); var renderer = new GreyFilterRenderer(model, provider, map, new PointSpriteState()); renderer.ModelSize = model.Lengths; return(renderer); }
private Renderer InitBackfaceRenderer() { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\RaycastVolumeRenderer\backface.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\RaycastVolumeRenderer\backface.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("position", RaycastModel.strposition); map.Add("boundingBox", RaycastModel.strcolor); var backfaceRenderer = new Renderer(model, provider, map); backfaceRenderer.Initialize(); backfaceRenderer.StateList.Add(new CullFaceState(CullFaceMode.Front, true)); return(backfaceRenderer); }
public static InnerImageProcessingRenderer Create(string textureFilename = @"Textures\edgeDetection.bmp") { var model = new ImageProcessingModel(); ShaderCode[] simpleShader = new ShaderCode[2]; simpleShader[0] = new ShaderCode(File.ReadAllText(@"shaders\ImageProcessingRenderer\ImageProcessing.vert"), ShaderType.VertexShader); simpleShader[1] = new ShaderCode(File.ReadAllText(@"shaders\ImageProcessingRenderer\ImageProcessing.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(simpleShader); var propertyNameMap = new AttributeMap(); propertyNameMap.Add("vert", "position"); propertyNameMap.Add("uv", "uv"); var renderer = new InnerImageProcessingRenderer( model, provider, propertyNameMap, ImageProcessingModel.strposition); renderer.textureFilename = textureFilename; return(renderer); }
public static WaterTextureRenderer Create(int waterPlaneLength) { var model = new PlaneModel(waterPlaneLength / 2); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\water\WaterTexture.vert.glsl"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\water\WaterTexture.frag.glsl"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("a_vertex", PlaneModel.strPosition); map.Add("a_texCoord", PlaneModel.strTexCoord); var renderer = new WaterTextureRenderer(model, provider, map, new FrontFaceState(FrontFaceMode.CCW), new ClearColorState(Color.Black, 0), new ViewportState(0, 0, TEXTURE_SIZE, TEXTURE_SIZE)); renderer.ModelSize = new vec3(waterPlaneLength, 0, waterPlaneLength); renderer.waterPlaneLength = waterPlaneLength; return(renderer); }
public static WaterRenderer Create(int waterPlaneLength) { var model = new WaterPlaneModel(waterPlaneLength); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\water\Water.vert.glsl"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\water\Water.frag.glsl"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("a_vertex", WaterPlaneModel.strPosition); var renderer = new WaterRenderer(model, provider, map, new FrontFaceState(FrontFaceMode.CCW)); renderer.waterTextureRenderer = WaterTextureRenderer.Create(waterPlaneLength); renderer.backgroundRenderer = WaterBackgroundRenderer.Create(waterPlaneLength); renderer.ModelSize = new vec3(waterPlaneLength + 1, waterPlaneLength + 1, waterPlaneLength + 1); renderer.waterPlaneLength = waterPlaneLength; return(renderer); }
protected override void DoInitialize() { { IBufferable model = new ParticleModel(); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\ParticleSimulatorRenderer\particleSimulator.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\ParticleSimulatorRenderer\particleSimulator.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("position", ParticleModel.strPosition); var particleRenderer = new ParticleRenderer(model, provider, map, new DepthTestState(false), new BlendState(BlendingSourceFactor.One, BlendingDestinationFactor.One)); particleRenderer.Initialize(); this.particleRenderer = particleRenderer; } { var particleComputeRenderer = new ParticleComputeRenderer( this.particleRenderer.PositionBuffer, this.particleRenderer.VelocityBuffer); particleComputeRenderer.Initialize(); this.particleComputeRenderer = particleComputeRenderer; } }