public SkySphere(float radius, int rings, int sectors, GxContext context) { mSampler = new Sampler(context); mMesh = new Mesh(context); mMesh.AddElement("POSITION", 0, 3); mMesh.AddElement("TEXCOORD", 0, 2); mMesh.BlendState.BlendEnabled = false; mMesh.DepthState.DepthEnabled = true; mMesh.Stride = IO.SizeCache<SphereVertex>.Size; InitVertices(radius, rings, sectors); mMesh.VertexBuffer.UpdateData(mVertices); mMatrixBuffer = new ConstantBuffer(context); mMatrixBuffer.UpdateData(Matrix.Identity); var program = new ShaderProgram(context); program.SetVertexShader(Resources.Shaders.SkyVertex); program.SetPixelShader(Resources.Shaders.SkyPixel); mMesh.Program = program; }
public void SetPixelSampler(int slot, Sampler sampler) { mContext.Context.PixelShader.SetSampler(slot, sampler.Native); }
public void SetVertexSampler(int slot, Sampler sampler) { mContext.Context.VertexShader.SetSampler(slot, sampler.Native); }
public static void Initialize(GxContext context) { Mesh = new Mesh(context) { Stride = IO.SizeCache<M2Vertex>.Size, DepthState = { DepthEnabled = true } }; Mesh.BlendState.Dispose(); Mesh.IndexBuffer.Dispose(); Mesh.VertexBuffer.Dispose(); Mesh.AddElement("POSITION", 0, 3); Mesh.AddElement("BLENDWEIGHT", 0, 4, DataType.Byte, true); Mesh.AddElement("BLENDINDEX", 0, 4, DataType.Byte); Mesh.AddElement("NORMAL", 0, 3); Mesh.AddElement("TEXCOORD", 0, 2); Mesh.AddElement("TEXCOORD", 1, 2); var program = new ShaderProgram(context); program.SetVertexShader(Resources.Shaders.M2VertexPortrait); program.SetPixelShader(Resources.Shaders.M2PixelPortrait); Mesh.Program = program; Sampler = new Sampler(context) { AddressMode = SharpDX.Direct3D11.TextureAddressMode.Wrap, Filter = SharpDX.Direct3D11.Filter.MinMagMipLinear }; for (var i = 0; i < BlendStates.Length; ++i) BlendStates[i] = new BlendState(context); BlendStates[0] = new BlendState(context) { BlendEnabled = false }; BlendStates[1] = new BlendState(context) { BlendEnabled = true, SourceBlend = SharpDX.Direct3D11.BlendOption.One, DestinationBlend = SharpDX.Direct3D11.BlendOption.Zero, SourceAlphaBlend = SharpDX.Direct3D11.BlendOption.One, DestinationAlphaBlend = SharpDX.Direct3D11.BlendOption.Zero }; BlendStates[2] = new BlendState(context) { BlendEnabled = true, SourceBlend = SharpDX.Direct3D11.BlendOption.SourceAlpha, DestinationBlend = SharpDX.Direct3D11.BlendOption.InverseSourceAlpha, SourceAlphaBlend = SharpDX.Direct3D11.BlendOption.SourceAlpha, DestinationAlphaBlend = SharpDX.Direct3D11.BlendOption.InverseSourceAlpha }; BlendStates[3] = new BlendState(context) { BlendEnabled = true, SourceBlend = SharpDX.Direct3D11.BlendOption.SourceColor, DestinationBlend = SharpDX.Direct3D11.BlendOption.DestinationColor, SourceAlphaBlend = SharpDX.Direct3D11.BlendOption.SourceAlpha, DestinationAlphaBlend = SharpDX.Direct3D11.BlendOption.DestinationAlpha }; BlendStates[4] = new BlendState(context) { BlendEnabled = true, SourceBlend = SharpDX.Direct3D11.BlendOption.SourceAlpha, DestinationBlend = SharpDX.Direct3D11.BlendOption.One, SourceAlphaBlend = SharpDX.Direct3D11.BlendOption.SourceAlpha, DestinationAlphaBlend = SharpDX.Direct3D11.BlendOption.One }; BlendStates[5] = new BlendState(context) { BlendEnabled = true, SourceBlend = SharpDX.Direct3D11.BlendOption.SourceAlpha, DestinationBlend = SharpDX.Direct3D11.BlendOption.InverseSourceAlpha, SourceAlphaBlend = SharpDX.Direct3D11.BlendOption.SourceAlpha, DestinationAlphaBlend = SharpDX.Direct3D11.BlendOption.InverseSourceAlpha }; BlendStates[6] = new BlendState(context) { BlendEnabled = true, SourceBlend = SharpDX.Direct3D11.BlendOption.DestinationColor, DestinationBlend = SharpDX.Direct3D11.BlendOption.SourceColor, SourceAlphaBlend = SharpDX.Direct3D11.BlendOption.DestinationAlpha, DestinationAlphaBlend = SharpDX.Direct3D11.BlendOption.SourceAlpha }; gNoBlendProgram = program; gBlendProgram = new ShaderProgram(context); gBlendProgram.SetPixelShader(Resources.Shaders.M2PixelPortraitBlend); gBlendProgram.SetVertexShader(Resources.Shaders.M2VertexPortrait); gNoCullState = new RasterState(context) {CullEnabled = false}; gCullState = new RasterState(context) {CullEnabled = true}; }
public static void Initialize(GxContext context) { gNoBlendState = new BlendState(context) { BlendEnabled = false }; gAlphaBlendState = new BlendState(context) { BlendEnabled = true }; gNoCullState = new RasterState(context) {CullEnabled = false}; gCullState = new RasterState(context) {CullEnabled = true}; Sampler = new Sampler(context); InstanceBuffer = new ConstantBuffer(context); InstanceBuffer.UpdateData(Matrix.Identity); // preallocate space so the underlying buffer wont change anymore Mesh = new Mesh(context) { DepthState = { DepthEnabled = true }, Stride = IO.SizeCache<IO.Files.Models.WmoVertex>.Size }; Mesh.AddElement("POSITION", 0, 3); Mesh.AddElement("NORMAL", 0, 3); Mesh.AddElement("TEXCOORD", 0, 2); Mesh.AddElement("COLOR", 0, 4, DataType.Byte, true); gNoBlendProgram = new ShaderProgram(context); gNoBlendProgram.SetVertexShader(Resources.Shaders.WmoVertex); gNoBlendProgram.SetPixelShader(Resources.Shaders.WmoPixel); gBlendProgram = new ShaderProgram(context); gBlendProgram.SetVertexShader(Resources.Shaders.WmoVertex); gBlendProgram.SetPixelShader(Resources.Shaders.WmoPixelBlend); gIndoorNoBlendProgram = new ShaderProgram(context); gIndoorNoBlendProgram.SetVertexShader(Resources.Shaders.WmoVertex); gIndoorNoBlendProgram.SetPixelShader(Resources.Shaders.WmoPixelIndoor); gIndoorBlendProgram = new ShaderProgram(context); gIndoorBlendProgram.SetVertexShader(Resources.Shaders.WmoVertex); gIndoorBlendProgram.SetPixelShader(Resources.Shaders.WmoPixelBlendIndoor); Mesh.Program = gNoBlendProgram; }
public void SetPixelSampler(int slot, Sampler sampler) { mContext.Context.PixelShader.SetSampler(slot, sampler.Native); }
public void SetVertexSampler(int slot, Sampler sampler) { mContext.Context.VertexShader.SetSampler(slot, sampler.Native); }
private static void InitMesh(GxContext context) { // all tiles will supply their own vertex buffer ChunkMesh.VertexBuffer.Dispose(); ChunkMesh.AddElement("POSITION", 0, 3); ChunkMesh.AddElement("NORMAL", 0, 3); ChunkMesh.AddElement("TEXCOORD", 0, 2); ChunkMesh.AddElement("TEXCOORD", 1, 2); ChunkMesh.AddElement("COLOR", 0, 4, DataType.Byte, true); ChunkMesh.AddElement("COLOR", 1, 4, DataType.Byte, true); ChunkMesh.IndexCount = 768; ChunkMesh.Stride = IO.SizeCache<IO.Files.Terrain.AdtVertex>.Size; ChunkMesh.BlendState.BlendEnabled = false; ChunkMesh.DepthState.DepthEnabled = true; ChunkMesh.RasterizerState.CullEnabled = true; BlendNew = new ShaderProgram(context); BlendNew.SetVertexShader(Resources.Shaders.TerrainVertex); BlendNew.SetPixelShader(Resources.Shaders.TerrainPixelNew); ChunkMesh.Program = BlendNew; BlendOld = new ShaderProgram(context); BlendOld.SetVertexShader(Resources.Shaders.TerrainVertex); BlendOld.SetPixelShader(Resources.Shaders.TerrainPixel); ColorSampler = new Sampler(context) { AddressMode = SharpDX.Direct3D11.TextureAddressMode.Wrap, Filter = SharpDX.Direct3D11.Filter.Anisotropic, MaximumAnisotropy = 16, }; AlphaSampler = new Sampler(context) { AddressMode = SharpDX.Direct3D11.TextureAddressMode.Clamp, Filter = SharpDX.Direct3D11.Filter.Anisotropic, MaximumAnisotropy = 16, }; }