有没有办法用我自己的代码替换光栅器?
Is there a way to replace the rasterizer with my own code?
我了解到图形管道 运行 是这样的:
但我希望它 运行 像这样:
有什么建议吗?这可能吗?
简答:否
长答案:有点。
您无法使用自定义代码控制光栅化过程,但可以控制要光栅化的最终像素。控制光栅化过程相当于剔除您不想通过各种模式出现的像素。
以下是您可以控制的内容,转述自here(DirectX 和OpenGL/Vulkan 的原理相同)
- 填充模式:应光栅化三角形内部的多少。
- 实心:显示整个三角形用颜色填充。
- 线框:仅显示三角形的线框。
- 剔除模式:应该从光栅化中移除三角形的哪个面。
- None:显示两边;不要剔除任何东西。
- 背部:不要露出背部。
- 正面:不显示正面。
- 两者:根本不显示三角形。 (这种情况很少见,通常通过其他方式完成)
- 缠绕顺序:给定顶点顺序方向确定三角形的正面。
- Clockwise:正面由顺时针的绕线顺序决定。
- Counterclockwise: 前面由逆时针顺序决定。
- 剪刀:允许一次剪掉整个区域。
- Enable/Disable:实际剪刀区域是通过视口定义的。
- DepthBias:将重叠的顶点移动多少以防止 Z 冲突。
- Enable/Disable
- 钳制:改变深度值的最大值。
- SlopeScaledDepthBias:主要用于阴影缓冲区。
- DepthClip:裁剪太远的像素。
我了解到图形管道 运行 是这样的:
但我希望它 运行 像这样:
有什么建议吗?这可能吗?
简答:否
长答案:有点。
您无法使用自定义代码控制光栅化过程,但可以控制要光栅化的最终像素。控制光栅化过程相当于剔除您不想通过各种模式出现的像素。
以下是您可以控制的内容,转述自here(DirectX 和OpenGL/Vulkan 的原理相同)
- 填充模式:应光栅化三角形内部的多少。
- 实心:显示整个三角形用颜色填充。
- 线框:仅显示三角形的线框。
- 剔除模式:应该从光栅化中移除三角形的哪个面。
- None:显示两边;不要剔除任何东西。
- 背部:不要露出背部。
- 正面:不显示正面。
- 两者:根本不显示三角形。 (这种情况很少见,通常通过其他方式完成)
- 缠绕顺序:给定顶点顺序方向确定三角形的正面。
- Clockwise:正面由顺时针的绕线顺序决定。
- Counterclockwise: 前面由逆时针顺序决定。
- 剪刀:允许一次剪掉整个区域。
- Enable/Disable:实际剪刀区域是通过视口定义的。
- DepthBias:将重叠的顶点移动多少以防止 Z 冲突。
- Enable/Disable
- 钳制:改变深度值的最大值。
- SlopeScaledDepthBias:主要用于阴影缓冲区。
- DepthClip:裁剪太远的像素。