//public override void generateRenderCommandsBegin(BaseRenderQueue q) { } //public override void generateRenderCommand(RenderInfo r, BaseRenderQueue q) { } public override void generateRenderCommandsFinalize(BaseRenderQueue q) { RenderQueue <TerrainRenderInfo> rq = q as RenderQueue <TerrainRenderInfo>; if (rq.myInfoCount > 0) { //these should all have the same renderstate TerrainRenderInfo firstTi = rq.myInfos[0] as TerrainRenderInfo; firstTi.renderState.setUniformBuffer(myInstanceMatrixBuffer.id, 2); setVertexBuffer(firstTi.renderState); q.addCommand(new SetRenderStateCommand(firstTi.renderState)); q.commands.Add(new MultiDrawArraysCommand(PrimitiveType.Triangles, myOffset, myCount, myDrawCount)); } }
public override void registerQueue(BaseRenderQueue rq) { base.registerQueue(rq); if (rq.myPipeline.id == 1) { myOpaqueTerrainQueue = rq; } if (rq.myPipeline.id == 2) { myTransparentTerrainQueue = rq; } if (rq.myPipeline.id == 3) { myWaterTerrainQueue = rq; } }
public GuiPass(RenderTarget target) : base("UI", "ui") { renderTarget = target; PipelineState ps = new PipelineState(); ps.blending.enabled = true; ps.shaderState.shaderProgram = UI.Canvas.theShader; ps.blending.enabled = true; ps.culling.enabled = false; ps.depthTest.enabled = false; ps.vaoState.vao = new VertexArrayObject(); ps.vaoState.vao.bindVertexFormat <V2T2B4>(ps.shaderState.shaderProgram); ps.generateId(); myRenderQueue = Renderer.device.createRenderQueue(ps); myRenderQueue.name = "UI"; registerQueue(myRenderQueue); }