public ImposterFloat(int width, int height, Format format, Color4 background, ImposterOverlayType overlayType) { if (Effect == null) { Effect = SharedEffects.Effects["ImposterFloat"] as ImposterFloatEffect; } m_Disposed = true; m_BackupState = new RenderTargetBackupState(); m_ImposterView = new View3D(new System.Drawing.Rectangle(0, 0, width, height), width, height, (float)Math.PI / 4, 1f); m_Format = format; m_Background = background; m_OverlayType = overlayType; }
public void RenderImposter(ImposterOverlayType overlay, VertexBufferBinding bindings, ShaderResourceView imposterTexture) { RenderImposter(overlay, bindings, imposterTexture, 1f); }
public void RenderImposter(ImposterOverlayType overlay, VertexBufferBinding bindings, ShaderResourceView imposterTexture, float brightPassThreshold) { if (m_Disposed == true) { return; } SlimDX.Direct3D11.DeviceContext context = GameEnvironment.Device.ImmediateContext; m_ImposterTextureResource.SetResource(imposterTexture); context.InputAssembler.InputLayout = m_Layout; context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleStrip; context.InputAssembler.SetVertexBuffers(0, bindings); context.InputAssembler.SetIndexBuffer(null, Format.Unknown, 0); m_BrightPassThreshold.Set(brightPassThreshold); if (overlay == ImposterOverlayType.None) { m_Pass_NoBlend.Apply(context); } else if (overlay == ImposterOverlayType.Add) { m_Pass_OverlayAdd.Apply(context); } else if (overlay == ImposterOverlayType.Subtract) { m_Pass_OverlaySubtract.Apply(context); } else if (overlay == ImposterOverlayType.Invert) { m_Pass_OverlayInvert.Apply(context); } else if (overlay == ImposterOverlayType.Alpha) { m_Pass_OverlayAlpha.Apply(context); } else if (overlay == ImposterOverlayType.None_BrightPass) { m_Pass_NoBlend_BrightPass.Apply(context); } else if (overlay == ImposterOverlayType.Add_BrightPass) { m_Pass_OverlayAdd_BrightPass.Apply(context); } else if (overlay == ImposterOverlayType.Subtract_BrightPass) { m_Pass_OverlaySubtract_BrightPass.Apply(context); } else if (overlay == ImposterOverlayType.Alpha_BrightPass) { m_Pass_OverlayAlpha_BrightPass.Apply(context); } else { throw new Exception("Unknown imposter overlay mode '" + overlay.ToString() + "'"); } context.Draw(4, 0); }
public void RenderImposter(ImposterOverlayType overlay, ShaderResourceView imposterTexture) { RenderImposter(overlay, imposterTexture, 1f); }