public PathXRenderSystem() { _device = Tig.RenderingDevice; // Create the indices now, they never change Span <ushort> indices = stackalloc ushort[6] { 0, 2, 1, 0, 3, 2 }; _indexBuffer = _device.CreateIndexBuffer(indices); _vertexBuffer = _device.CreateEmptyVertexBuffer(IntgameVertex.Size * 4, debugName: "PathXVB"); _bufferBinding = Tig.RenderingDevice.CreateMdfBufferBinding().Ref(); _bufferBinding.Resource.AddBuffer <IntgameVertex>(_vertexBuffer, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); _aooIndexBuffer = _device.CreateIndexBuffer(AooIndices); _aooVertexBuffer = _device.CreateEmptyVertexBuffer(IntgameVertex.Size * 7, debugName: "PathXVBAoo"); _aooBufferBinding = Tig.RenderingDevice.CreateMdfBufferBinding().Ref(); _aooBufferBinding.Resource.AddBuffer <IntgameVertex>(_aooVertexBuffer, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }
public ConeRenderer(RenderingDevice device) { _device = device; _fanIndexBuffer = device.CreateIndexBuffer(FanIndices); _fanVertexBuffer = device.CreateEmptyVertexBuffer(IntgameVertex.Size * 20, debugName: "ConeRendererFanVb"); _fanBufferBinding = device.CreateMdfBufferBinding().Ref(); _fanBufferBinding.Resource.AddBuffer <IntgameVertex>(_fanVertexBuffer.Resource, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); _ringIndexBuffer = device.CreateIndexBuffer(RingIndices); _ringVertexBuffer = device.CreateEmptyVertexBuffer(IntgameVertex.Size * 38, debugName: "ConeRendererRingVb"); _ringBufferBinding = device.CreateMdfBufferBinding().Ref(); _ringBufferBinding.Resource.AddBuffer <IntgameVertex>(_ringVertexBuffer.Resource, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); _flankIndexBuffer = device.CreateIndexBuffer(FlankIndices); _flankVertexBuffer = device.CreateEmptyVertexBuffer(IntgameVertex.Size * 10, debugName: "ConeRendererRingFlank"); _flankBufferBinding = device.CreateMdfBufferBinding().Ref(); _flankBufferBinding.Resource.AddBuffer <IntgameVertex>(_flankVertexBuffer.Resource, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }
private void CreateResources(RenderingDevice obj) { Span <ushort> indices = stackalloc ushort[] { 0, 2, 1, 0, 3, 2, 4, 6, 5, 4, 7, 6, 8, 10, 9, 8, 11, 10, 12, 14, 13, 12, 15, 14 }; _discIndexBuffer = _device.CreateIndexBuffer(indices); _discVertexBuffer = _device.CreateEmptyVertexBuffer(ShapeVertex3d.Size * 16, debugName: "ShapeRenderer3dDisc"); _discBufferBinding.Resource.AddBuffer <ShapeVertex3d>(_discVertexBuffer, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); // +3 because for n lines, you need n+1 points and in this case, we have to repeat // the first point again to close the loop (so +2) and also include the center point // to draw a circle at the end (+3) _circleVertexBuffer = _device.CreateEmptyVertexBuffer(Marshal.SizeOf <Vector3>() * (CircleSegments + 3), debugName: "ShapeRenderer3dCircle"); // Pre-generate the circle indexbuffer. // One triangle per circle segment Span <ushort> circleIndices = stackalloc ushort[CircleSegments * 3]; for (ushort i = 0; i < CircleSegments; i++) { circleIndices[i * 3] = (ushort)(i + 2); circleIndices[i * 3 + 1] = 0; // The center point has to be in the triangle circleIndices[i * 3 + 2] = (ushort)(i + 1); } _circleIndexBuffer = _device.CreateIndexBuffer(circleIndices, true); _circleBinding.Resource.AddBuffer <Vector3>(_circleVertexBuffer, 0) .AddElement(VertexElementType.Float3, VertexElementSemantic.Position); // Just the two end points of a line _lineVertexBuffer = _device.CreateEmptyVertexBuffer(Marshal.SizeOf <Vector3>() * 2, debugName: "ShapeRenderer3dLine"); _lineBinding.Resource.AddBuffer <Vector3>(_lineVertexBuffer, 0) .AddElement(VertexElementType.Float3, VertexElementSemantic.Position); }
public PickerAreaRenderer(RenderingDevice device) { _device = device; _fanIndexBuffer = device.CreateIndexBuffer(FanIndices); _fanVertexBuffer = device.CreateEmptyVertexBuffer(IntgameVertex.Size * 39, debugName: "PickerAreaFan"); _fanBufferBinding = device.CreateMdfBufferBinding().Ref(); _fanBufferBinding.Resource.AddBuffer <IntgameVertex>(_fanVertexBuffer.Resource, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); _ringIndexBuffer = device.CreateIndexBuffer(RingIndices); _ringVertexBuffer = device.CreateEmptyVertexBuffer(IntgameVertex.Size * 76, debugName: "PickerAreaRing"); _ringBufferBinding = device.CreateMdfBufferBinding().Ref(); _ringBufferBinding.Resource.AddBuffer <IntgameVertex>(_ringVertexBuffer.Resource, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }
public RectangleRenderer(RenderingDevice device) { _device = device; _innerIndexBuffer = device.CreateIndexBuffer(InnerIndices); _innerVertexBuffer = device.CreateEmptyVertexBuffer(IntgameVertex.Size * 22, debugName: "RectangleInner"); _innerBufferBinding = device.CreateMdfBufferBinding().Ref(); _innerBufferBinding.Resource.AddBuffer <IntgameVertex>(_innerVertexBuffer.Resource, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); _outerIndexBuffer = device.CreateIndexBuffer(OuterIndices); _outerVertexBuffer = device.CreateEmptyVertexBuffer(IntgameVertex.Size * 52, debugName: "RectangleOuter"); _outerBufferBinding = device.CreateMdfBufferBinding().Ref(); _outerBufferBinding.Resource.AddBuffer <IntgameVertex>(_outerVertexBuffer.Resource, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }
public SpellPointerRenderer(RenderingDevice device) { _device = device; _indexBuffer = device.CreateIndexBuffer(Indices); _vertexBuffer = device.CreateEmptyVertexBuffer(IntgameVertex.Size * 4, debugName: "SpellPointer"); _bufferBinding = device.CreateMdfBufferBinding().Ref(); _bufferBinding.Resource.AddBuffer <IntgameVertex>(_vertexBuffer.Resource, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); _material = Tig.MdfFactory.LoadMaterial("art/interface/intgame_select/Spell_Effect-Pointer.mdf"); }
public QuadEmitterRenderState(RenderingDevice device, PartSysEmitter emitter) : base(device, emitter, false) { bufferBinding = new BufferBinding(device, material.Resource.VertexShader).Ref(); var maxCount = emitter.GetSpec().GetMaxParticles(); vertexBuffer = device.CreateEmptyVertexBuffer(SpriteVertex.Size * 4 * maxCount, debugName:"ParticlesQuadEmitter"); bufferBinding.Resource .AddBuffer<SpriteVertex>(vertexBuffer, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }
public FrogGrappleController(RenderingDevice device, MdfMaterialFactory mdfFactory) { mDevice = device; mBufferBinding = device.CreateMdfBufferBinding(); mTongueMaterial = mdfFactory.LoadMaterial("art/meshes/Monsters/GiantFrog/tongue.mdf"); mVertexBuffer = device.CreateEmptyVertexBuffer(TongueVertex.Size * VertexCount, debugName: "FrogTongue"); CreateIndexBuffer(); mBufferBinding.AddBuffer(mVertexBuffer, 0, TongueVertex.Size) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }
protected LineSegmentRenderer(RenderingDevice device, MdfMaterialFactory materialFactory, PerlinNoise noise, int maxLineSegments, string debugName) { _noise = noise; Vertices = new Vertex[maxLineSegments * 2]; Jitter = new float[maxLineSegments]; _device = device; _material = materialFactory.LoadMaterial("art/meshes/lightning.mdf", material => material.perVertexColor = true); _indexBuffer = CreateIndexBuffer(_device, maxLineSegments, debugName); _capIndexBuffer = CreateIndexBuffer2(_device, debugName); _vertexBuffer = _device.CreateEmptyVertexBuffer(Vertex.Size * Vertices.Length, debugName: debugName); _bufferBinding = _device.CreateMdfBufferBinding(true).Ref(); _bufferBinding.Resource.AddBuffer <Vertex>(_vertexBuffer.Resource, 0) .AddElement(VertexElementType.Float3, VertexElementSemantic.Position) .AddElement(VertexElementType.Float3, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }
public FogOfWarRenderer(MapFoggingSystem fogSystem, RenderingDevice device) { _device = device; _fogSystem = fogSystem; _vertexShader = device.GetShaders().LoadVertexShader("fogofwar_vs"); _bufferBinding = new BufferBinding(device, _vertexShader).Ref(); UpdateBufferSize(true); Span <ushort> indices = stackalloc ushort[] { 0, 2, 1, 2, 0, 3 }; _indexBuffer = device.CreateIndexBuffer(indices, debugName: "FogOfWar"); _vertexBuffer = device.CreateEmptyVertexBuffer(FogOfWarVertex.Size * 4, debugName: "FogOfWar"); _bufferBinding.Resource .AddBuffer <FogOfWarVertex>(_vertexBuffer, 0) .AddElement(VertexElementType.Float3, VertexElementSemantic.Position) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }
public ShapeRenderer2d(RenderingDevice device) { _device = device; _textures = device.GetTextures(); untexturedMaterial = CreateMaterial(device, "diffuse_only_ps"); texturedMaterial = CreateMaterial(device, "textured_simple_ps"); texturedWithoutBlendingMaterial = CreateMaterial(device, "textured_simple_ps", false, false); texturedWithMaskMaterial = CreateMaterial(device, "textured_two_ps"); lineMaterial = CreateMaterial(device, "diffuse_only_ps", true); outlineMaterial = CreateOutlineMaterial(device); pieFillMaterial = CreatePieFillMaterial(device); bufferBinding = new BufferBinding(device, texturedMaterial.VertexShader).Ref(); mdfBufferBinding = _device.CreateMdfBufferBinding(); lineBufferBinding = new BufferBinding(device, lineMaterial.VertexShader).Ref(); SamplerSpec samplerWrapSpec = new SamplerSpec(); samplerWrapSpec.addressU = TextureAddress.Wrap; samplerWrapSpec.addressV = TextureAddress.Wrap; samplerWrapSpec.minFilter = TextureFilterType.Linear; samplerWrapSpec.magFilter = TextureFilterType.Linear; samplerWrapSpec.mipFilter = TextureFilterType.Linear; samplerWrapState = _device.CreateSamplerState(samplerWrapSpec); SamplerSpec samplerClampPointSpec = new SamplerSpec(); samplerClampPointSpec.addressU = TextureAddress.Clamp; samplerClampPointSpec.addressV = TextureAddress.Clamp; samplerClampPointSpec.minFilter = TextureFilterType.NearestNeighbor; samplerClampPointSpec.magFilter = TextureFilterType.NearestNeighbor; samplerClampPointSpec.mipFilter = TextureFilterType.NearestNeighbor; samplerClampPointState = _device.CreateSamplerState(samplerClampPointSpec); SamplerSpec samplerClampSpec = new SamplerSpec(); samplerClampSpec.addressU = TextureAddress.Clamp; samplerClampSpec.addressV = TextureAddress.Clamp; samplerClampSpec.minFilter = TextureFilterType.Linear; samplerClampSpec.magFilter = TextureFilterType.Linear; samplerClampSpec.mipFilter = TextureFilterType.Linear; samplerClampState = _device.CreateSamplerState(samplerClampSpec); DepthStencilSpec noDepthSpec = new DepthStencilSpec(); noDepthSpec.depthEnable = false; noDepthState = _device.CreateDepthStencilState(noDepthSpec); vertexBuffer = _device.CreateEmptyVertexBuffer(Vertex2d.Size * 8, debugName: "ShapeRenderer2d"); var indexData = new ushort[] { 0, 1, 2, 2, 3, 0 }; indexBuffer = _device.CreateIndexBuffer(indexData); bufferBinding.Resource.AddBuffer <Vertex2d>(vertexBuffer, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); mdfBufferBinding.AddBuffer <Vertex2d>(vertexBuffer, 0) .AddElement(VertexElementType.Float4, VertexElementSemantic.Position) .AddElement(VertexElementType.Float4, VertexElementSemantic.Normal) .AddElement(VertexElementType.Color, VertexElementSemantic.Color) .AddElement(VertexElementType.Float2, VertexElementSemantic.TexCoord); }