private void SetAlphaBlending() { //TODO: Support independent blend properly. bool Enable = (ReadRegister(NvGpuEngine3dReg.IBlendNEnable) & 1) != 0; Gpu.Renderer.SetBlendEnable(Enable); bool BlendSeparateAlpha = (ReadRegister(NvGpuEngine3dReg.IBlendNSeparateAlpha) & 1) != 0; GalBlendEquation EquationRgb = (GalBlendEquation)ReadRegister(NvGpuEngine3dReg.IBlendNEquationRgb); GalBlendFactor FuncSrcRgb = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.IBlendNFuncSrcRgb); GalBlendFactor FuncDstRgb = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.IBlendNFuncDstRgb); if (BlendSeparateAlpha) { GalBlendEquation EquationAlpha = (GalBlendEquation)ReadRegister(NvGpuEngine3dReg.IBlendNEquationAlpha); GalBlendFactor FuncSrcAlpha = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.IBlendNFuncSrcAlpha); GalBlendFactor FuncDstAlpha = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.IBlendNFuncDstAlpha); Gpu.Renderer.SetBlendSeparate( EquationRgb, EquationAlpha, FuncSrcRgb, FuncDstRgb, FuncSrcAlpha, FuncDstAlpha); } else { Gpu.Renderer.SetBlend(EquationRgb, FuncSrcRgb, FuncDstRgb); } }
public void SetBlend( GalBlendEquation Equation, GalBlendFactor FuncSrc, GalBlendFactor FuncDst) { ActionsQueue.Enqueue(() => Blend.Set(Equation, FuncSrc, FuncDst)); }
private void SetAlphaBlending() { bool BlendEnableMaster = (ReadRegister(NvGpuEngine3dReg.BlendEnableMaster) & 1) != 0; Gpu.Renderer.SetBlendEnable(BlendEnableMaster); bool BlendSeparateAlpha = (ReadRegister(NvGpuEngine3dReg.BlendSeparateAlpha) & 1) != 0; GalBlendEquation EquationRgb = (GalBlendEquation)ReadRegister(NvGpuEngine3dReg.BlendEquationRgb); GalBlendFactor FuncSrcRgb = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.BlendFuncSrcRgb); GalBlendFactor FuncDstRgb = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.BlendFuncDstRgb); if (BlendSeparateAlpha) { GalBlendEquation EquationAlpha = (GalBlendEquation)ReadRegister(NvGpuEngine3dReg.BlendEquationAlpha); GalBlendFactor FuncSrcAlpha = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.BlendFuncSrcAlpha); GalBlendFactor FuncDstAlpha = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.BlendFuncDstAlpha); Gpu.Renderer.SetBlendSeparate( EquationRgb, EquationAlpha, FuncSrcRgb, FuncDstRgb, FuncSrcAlpha, FuncDstAlpha); } else { Gpu.Renderer.SetBlend(EquationRgb, FuncSrcRgb, FuncDstRgb); } }
public void Set( GalBlendEquation Equation, GalBlendFactor FuncSrc, GalBlendFactor FuncDst) { GL.BlendEquation( OGLEnumConverter.GetBlendEquation(Equation)); GL.BlendFunc( OGLEnumConverter.GetBlendFactorSrc(FuncSrc), OGLEnumConverter.GetBlendFactorDst(FuncDst)); }
private void SetAlphaBlending() { //TODO: Support independent blend properly. bool Enable = (ReadRegister(NvGpuEngine3dReg.IBlendNEnable) & 1) != 0; if (Enable) { Gpu.Renderer.Blend.Enable(); } else { Gpu.Renderer.Blend.Disable(); } if (!Enable) { //If blend is not enabled, then the other values have no effect. //Note that if it is disabled, the register may contain invalid values. return; } bool BlendSeparateAlpha = (ReadRegister(NvGpuEngine3dReg.IBlendNSeparateAlpha) & 1) != 0; GalBlendEquation EquationRgb = (GalBlendEquation)ReadRegister(NvGpuEngine3dReg.IBlendNEquationRgb); GalBlendFactor FuncSrcRgb = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.IBlendNFuncSrcRgb); GalBlendFactor FuncDstRgb = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.IBlendNFuncDstRgb); if (BlendSeparateAlpha) { GalBlendEquation EquationAlpha = (GalBlendEquation)ReadRegister(NvGpuEngine3dReg.IBlendNEquationAlpha); GalBlendFactor FuncSrcAlpha = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.IBlendNFuncSrcAlpha); GalBlendFactor FuncDstAlpha = (GalBlendFactor)ReadRegister(NvGpuEngine3dReg.IBlendNFuncDstAlpha); Gpu.Renderer.Blend.SetSeparate( EquationRgb, EquationAlpha, FuncSrcRgb, FuncDstRgb, FuncSrcAlpha, FuncDstAlpha); } else { Gpu.Renderer.Blend.Set(EquationRgb, FuncSrcRgb, FuncDstRgb); } }
public static BlendingFactor GetBlendFactor(GalBlendFactor BlendFactor) { switch (BlendFactor) { case GalBlendFactor.Zero: return(BlendingFactor.Zero); case GalBlendFactor.One: return(BlendingFactor.One); case GalBlendFactor.SrcColor: return(BlendingFactor.SrcColor); case GalBlendFactor.OneMinusSrcColor: return(BlendingFactor.OneMinusSrcColor); case GalBlendFactor.DstColor: return(BlendingFactor.DstColor); case GalBlendFactor.OneMinusDstColor: return(BlendingFactor.OneMinusDstColor); case GalBlendFactor.SrcAlpha: return(BlendingFactor.SrcAlpha); case GalBlendFactor.OneMinusSrcAlpha: return(BlendingFactor.OneMinusSrcAlpha); case GalBlendFactor.DstAlpha: return(BlendingFactor.DstAlpha); case GalBlendFactor.OneMinusDstAlpha: return(BlendingFactor.OneMinusDstAlpha); case GalBlendFactor.OneMinusConstantColor: return(BlendingFactor.OneMinusConstantColor); case GalBlendFactor.ConstantAlpha: return(BlendingFactor.ConstantAlpha); case GalBlendFactor.OneMinusConstantAlpha: return(BlendingFactor.OneMinusConstantAlpha); case GalBlendFactor.SrcAlphaSaturate: return(BlendingFactor.SrcAlphaSaturate); case GalBlendFactor.Src1Color: return(BlendingFactor.Src1Color); case GalBlendFactor.OneMinusSrc1Color: return((BlendingFactor)BlendingFactorSrc.OneMinusSrc1Color); case GalBlendFactor.Src1Alpha: return(BlendingFactor.Src1Alpha); case GalBlendFactor.OneMinusSrc1Alpha: return((BlendingFactor)BlendingFactorSrc.OneMinusSrc1Alpha); case GalBlendFactor.ConstantColor: case GalBlendFactor.ConstantColorG80: return(BlendingFactor.ConstantColor); } throw new ArgumentException(nameof(BlendFactor)); }
public void SetSeparate( GalBlendEquation EquationRgb, GalBlendEquation EquationAlpha, GalBlendFactor FuncSrcRgb, GalBlendFactor FuncDstRgb, GalBlendFactor FuncSrcAlpha, GalBlendFactor FuncDstAlpha) { GL.BlendEquationSeparate( OGLEnumConverter.GetBlendEquation(EquationRgb), OGLEnumConverter.GetBlendEquation(EquationAlpha)); GL.BlendFuncSeparate( OGLEnumConverter.GetBlendFactorSrc(FuncSrcRgb), OGLEnumConverter.GetBlendFactorDst(FuncDstRgb), OGLEnumConverter.GetBlendFactorSrc(FuncSrcAlpha), OGLEnumConverter.GetBlendFactorDst(FuncDstAlpha)); }
public void SetBlendSeparate( GalBlendEquation EquationRgb, GalBlendEquation EquationAlpha, GalBlendFactor FuncSrcRgb, GalBlendFactor FuncDstRgb, GalBlendFactor FuncSrcAlpha, GalBlendFactor FuncDstAlpha) { ActionsQueue.Enqueue(() => { Blend.SetSeparate( EquationRgb, EquationAlpha, FuncSrcRgb, FuncDstRgb, FuncSrcAlpha, FuncDstAlpha); }); }
public static BlendingFactor GetBlendFactor(GalBlendFactor blendFactor) { switch (blendFactor) { case GalBlendFactor.Zero: case GalBlendFactor.ZeroGl: return(BlendingFactor.Zero); case GalBlendFactor.One: case GalBlendFactor.OneGl: return(BlendingFactor.One); case GalBlendFactor.SrcColor: case GalBlendFactor.SrcColorGl: return(BlendingFactor.SrcColor); case GalBlendFactor.OneMinusSrcColor: case GalBlendFactor.OneMinusSrcColorGl: return(BlendingFactor.OneMinusSrcColor); case GalBlendFactor.DstColor: case GalBlendFactor.DstColorGl: return(BlendingFactor.DstColor); case GalBlendFactor.OneMinusDstColor: case GalBlendFactor.OneMinusDstColorGl: return(BlendingFactor.OneMinusDstColor); case GalBlendFactor.SrcAlpha: case GalBlendFactor.SrcAlphaGl: return(BlendingFactor.SrcAlpha); case GalBlendFactor.OneMinusSrcAlpha: case GalBlendFactor.OneMinusSrcAlphaGl: return(BlendingFactor.OneMinusSrcAlpha); case GalBlendFactor.DstAlpha: case GalBlendFactor.DstAlphaGl: return(BlendingFactor.DstAlpha); case GalBlendFactor.OneMinusDstAlpha: case GalBlendFactor.OneMinusDstAlphaGl: return(BlendingFactor.OneMinusDstAlpha); case GalBlendFactor.OneMinusConstantColor: case GalBlendFactor.OneMinusConstantColorGl: return(BlendingFactor.OneMinusConstantColor); case GalBlendFactor.ConstantAlpha: case GalBlendFactor.ConstantAlphaGl: return(BlendingFactor.ConstantAlpha); case GalBlendFactor.OneMinusConstantAlpha: case GalBlendFactor.OneMinusConstantAlphaGl: return(BlendingFactor.OneMinusConstantAlpha); case GalBlendFactor.SrcAlphaSaturate: case GalBlendFactor.SrcAlphaSaturateGl: return(BlendingFactor.SrcAlphaSaturate); case GalBlendFactor.Src1Color: case GalBlendFactor.Src1ColorGl: return(BlendingFactor.Src1Color); case GalBlendFactor.OneMinusSrc1Color: case GalBlendFactor.OneMinusSrc1ColorGl: return((BlendingFactor)BlendingFactorSrc.OneMinusSrc1Color); case GalBlendFactor.Src1Alpha: case GalBlendFactor.Src1AlphaGl: return(BlendingFactor.Src1Alpha); case GalBlendFactor.OneMinusSrc1Alpha: case GalBlendFactor.OneMinusSrc1AlphaGl: return((BlendingFactor)BlendingFactorSrc.OneMinusSrc1Alpha); case GalBlendFactor.ConstantColor: case GalBlendFactor.ConstantColorGl: return(BlendingFactor.ConstantColor); } throw new ArgumentException(nameof(blendFactor) + " \"" + blendFactor + "\" is not valid!"); }
public static BlendingFactorDest GetBlendFactorDst(GalBlendFactor BlendFactor) { return((BlendingFactorDest)(BlendFactor - 0x4000)); }
public static BlendingFactorSrc GetBlendFactorSrc(GalBlendFactor BlendFactor) { return((BlendingFactorSrc)(BlendFactor - 0x4000)); }