public StencilShadowRenderer(Game game) { this.game = game; var desc = new MaterialPassDesc(); desc.ManualConstantBuffers = true; desc.ShaderFile = "StencilShadow.hlsl"; desc.BlendStates.RenderTarget[0].IsBlendEnabled = true; desc.BlendStates.RenderTarget[0].SourceBlend = BlendOption.SourceAlpha; desc.BlendStates.RenderTarget[0].DestinationBlend = BlendOption.InverseSourceAlpha; desc.BlendStates.RenderTarget[0].BlendOperation = BlendOperation.Add; desc.BlendStates.RenderTarget[0].SourceAlphaBlend = BlendOption.One; desc.BlendStates.RenderTarget[0].DestinationAlphaBlend = BlendOption.Zero; desc.BlendStates.RenderTarget[0].AlphaBlendOperation = BlendOperation.Add; desc.BlendStates.RenderTarget[0].RenderTargetWriteMask = ColorWriteMaskFlags.All; desc.DepthStencilStates.IsDepthEnabled = true; desc.DepthStencilStates.DepthWriteMask = DepthWriteMask.Zero; desc.DepthStencilStates.DepthComparison = Comparison.LessEqual; desc.DepthStencilStates.IsStencilEnabled = true; desc.DepthStencilStates.StencilReadMask = 1; desc.DepthStencilStates.StencilWriteMask = 1; desc.DepthStencilStates.FrontFace.FailOperation = StencilOperation.Keep; desc.DepthStencilStates.FrontFace.DepthFailOperation = StencilOperation.Keep; desc.DepthStencilStates.FrontFace.PassOperation = StencilOperation.Replace; desc.DepthStencilStates.FrontFace.Comparison = Comparison.NotEqual; desc.StencilRef = 1; pass = new MaterialPass(game.Device, desc, "StencilShadow"); buffer = Material.CreateBuffer<ShaderData>(); }
public RenderCubemap(Game game, int size, string debugName = null) { this.mGame = game; this.mSize = size; this.Name = debugName ?? ("RenderCubemap" + Debug.NextObjectId); Create3D(); }
public Postprocess(Game game, string shaderFile, RenderTexture rt = null, string name = null) { this.game = game; this.renderTexture = rt; if(name == null) { this.Name = System.IO.Path.GetFileNameWithoutExtension(shaderFile); this.debugName = "Postprocess " + this.Name; } else { this.debugName = this.Name = name; } this.shaderFile = shaderFile; var desc = SamplerStateDescription.Default(); desc.Filter = Filter.MinMagMipPoint; defaultSamplerStateDescription = desc; LoadShader(); BuildVertexBuffer(); ppBuffer = Material.CreateBuffer<LiliumPostprocessData>(); game.AddObject(this); }
public MainForm(Game game) { Instance = this; InitializeComponent(); this.game = game; this.Text = game.GetType().Name; }
public FrustumRenderer(Game game, BoundingFrustum frustum, string debugName = null) { this.game = game; this.debugName = debugName ?? "FrustumRenderer " + Debug.NextObjectId; line = new LineRenderer(game, 12, this.debugName); UpdateFrustum(frustum); }
public CubemapPreview(Game game, ShaderResourceView view) { this.mGame = game; if (view != null && view.Description.Dimension == SharpDX.Direct3D.ShaderResourceViewDimension.TextureCube) { var res = view.Resource; tex = res.QueryInterface<Texture2D>(); (res as IUnknown).Release(); (tex as IUnknown).Release(); Name = view.DebugName; } }
public SkyBox(Game game, ShaderResourceView cubeMap, string debugName = null) { this.game = game; this.cubeMap = cubeMap; cube = game.ResourceManager.Mesh.Load(InternalResources.MESH_CUBE); MaterialPassDesc desc = new MaterialPassDesc(); desc.ManualConstantBuffers = true; desc.ShaderFile = "Skybox.hlsl"; desc.RasteriazerStates.CullMode = CullMode.Front; desc.DepthStencilStates.DepthWriteMask = DepthWriteMask.Zero; pass = new MaterialPass(game.Device, desc, debugName ?? "Skybox" + Debug.NextObjectId); buffer = Material.CreateBuffer<Data>(); }
public TexturePreviewQuad(Game game, Texture2DDescription textureDesc) { this.game = game; var passDesc = new MaterialPassDesc(); passDesc.ManualConstantBuffers = true; passDesc.ShaderFile = "TexturePreview.hlsl"; passDesc.InputElements = new InputElement[]{ new InputElement("POSITION", 0, SharpDX.DXGI.Format.R32G32B32_Float, 0, 0), new InputElement("TEXCOORD", 0, SharpDX.DXGI.Format.R32G32_Float, 12, 0), }; pass = new MaterialPass(Game.Instance.Device, passDesc, "Preview"); BuildVertexBuffer(textureDesc); }
public LineRenderer(Game game, int capacity = 128, string debugName = null) { this.game = game; this.capacity = capacity; this.debugName = debugName; vertices = new LineVertex[capacity * 2]; isDirty = true; is3DInvalid = true; Desc = new MaterialPassDesc(); Desc.ManualConstantBuffers = true; Desc.ShaderFile = InternalResources.SHADER_DEBUG_LINE; Desc.InputElements = new InputElement[]{ new InputElement("POSITION", 0, SharpDX.DXGI.Format.R32G32B32_Float, 0, 0), new InputElement("COLOR", 0, SharpDX.DXGI.Format.R32G32B32A32_Float, 12, 0), }; Desc.RasteriazerStates.CullMode = CullMode.None; }
public RenderTexture(Game game, int width, int height, int mrtCount = 1, string debugName = null) { this.game = game; if (mrtCount < 1) mrtCount = 1; this.debugName = debugName ?? "RenderTexture " + Debug.NextObjectId; var format = Format.R32G32B32A32_Float; { var desc = new Texture2DDescription(); desc.Format = format; desc.Width = width; desc.Height = height; desc.BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource; desc.Usage = ResourceUsage.Default; desc.ArraySize = 1; desc.CpuAccessFlags = CpuAccessFlags.None; desc.MipLevels = 1; desc.SampleDescription.Count = 1; desc.SampleDescription.Quality = 0; desc.OptionFlags = ResourceOptionFlags.None; textures = new Texture2D[mrtCount]; for (int i = 0; i < mrtCount; ++i) { textures[i] = new Texture2D(game.Device, desc); textures[i].DebugName = DebugName + "[" + i + "]"; } } { var desc = new RenderTargetViewDescription(); desc.Format = format; desc.Dimension = RenderTargetViewDimension.Texture2D; desc.Texture2D.MipSlice = 0; renderTargetViews = new RenderTargetView[mrtCount]; for (int i = 0; i < mrtCount; ++i) { renderTargetViews[i] = new RenderTargetView(game.Device, textures[i], desc); renderTargetViews[i].DebugName = DebugName + "[" + i + "]"; } } { shaderResourceViews = new ShaderResourceView[mrtCount]; for (int i = 0; i < mrtCount; ++i) { shaderResourceViews[i] = new ShaderResourceView(game.Device, textures[i]); shaderResourceViews[i].DebugName = DebugName + "[" + i + "]"; } } { clearColors = new Color4[mrtCount]; for (int i = 0; i < mrtCount; ++i) { clearColors[i] = Color4.Black; } } { var desc = new Texture2DDescription(); desc.Format = Format.D24_UNorm_S8_UInt; desc.ArraySize = 1; desc.MipLevels = 1; desc.Width = width; desc.Height = height; desc.SampleDescription.Count = 1; desc.SampleDescription.Quality = 0; desc.Usage = ResourceUsage.Default; desc.BindFlags = BindFlags.DepthStencil; desc.CpuAccessFlags = CpuAccessFlags.None; desc.OptionFlags = ResourceOptionFlags.None; depthStencilTexture = new Texture2D(game.Device, desc); depthStencilTexture.DebugName = DebugName + "(DS)"; } { depthStencilView = new DepthStencilView(game.Device, depthStencilTexture); depthStencilView.DebugName = DebugName; } vp = new SharpDX.Viewport(0, 0, width, height); game.AddObject(this); }
public RenderTexture(Game game, int mrtCount = 1, string debugName = null) : this(game, game.RenderViewSize.Width, game.RenderViewSize.Height, mrtCount, debugName) { }
public static void Init(Game game) { debugLineRenderer = new LineRenderer(game, 256, "Debug Line"); debugLineRenderer.Desc.DepthStencilStates.IsDepthEnabled = false; debugLineRenderer.Create3D(); }