RenderHelp icon indicating copy to clipboard operation
RenderHelp copied to clipboard

请教: 深度缓存记录 1/w

Open lvjiahui opened this issue 4 years ago • 3 comments

请问深度缓存为什么不是 z/w 呢? 是我理解有误,还是有什么讲究呢?

lvjiahui avatar Sep 18 '21 17:09 lvjiahui

我也想问

Mr-Rainbow-777 avatar Apr 13 '22 12:04 Mr-Rainbow-777

请问深度缓存为什么不是 z/w 呢? 是我理解有误,还是有什么讲究呢?

按照我的理解,z/w和1/w是线性关系,在做深度测试的时候是等效的。

whl33886 avatar Oct 08 '22 09:10 whl33886

Depth buffer 的实现有 z-buffer,还有 w-buffer:

https://learn.microsoft.com/en-us/windows-hardware/drivers/display/w-buffering

各有各的实现吧,不少软件实现用这个,用 1/w 的好处有几个:

1)同 z/w 是等效的。 2)最远处是 0,比较好清零。 3)屏幕空间插值时,1/w 最先被计算出来,不必算其他的就能直接判断。 4)不用特殊处理 z。

我觉得用起来更清爽。

skywind3000 avatar Oct 08 '22 11:10 skywind3000