depth linear

首先backbuffer不支持float

但不是backbuffer的rtv可以是float类型

Rfloat 这个rt是可以写入6554的

R8这个是个整型的rt 8bits 存的时候是 可以存250的 但是我们写入的时候 写的是0.7 buffer里会写255x0.7 读的时候/255

(hdr中间rt写入的6554这种float之后会被remap到0-1)

--------------------------------

了解了以上两点 接下来要讨论的是

RHalf   1+5+10

RFloat 1+8+23 放0附近

RHalfUnorm 放1附近 ios13 存的是指数

R8 各自表示的精度范围 

RHalf   2^10----10^3有效数字 

R8   1/255   

R8G8 encode x+y/255  1/65025    (255x255) 不是256( 00 01 10 11 间隔/精度 1/3)

综上 我选r8g8 encode吧

----------------------------------------------

// Values used to linearize the Z buffer (http://www.humus.name/temp/Linearize%20depth.txt)  OGL
// x = 1-far/near
// y = far/near
// z = x/far
// w = y/far
// or in case of a reversed depth buffer (UNITY_REVERSED_Z is 1) DX
// x = -1+far/near  
// y = 1
// z = x/far
// w = 1/far
float4 _ZBufferParams;

 

// Z buffer to linear 0..1 depth
inline float Linear01Depth( float z )
{
return 1.0 / (_ZBufferParams.x * z + _ZBufferParams.y);
}
// Z buffer to linear depth
inline float LinearEyeDepth( float z )
{
return 1.0 / (_ZBufferParams.z * z + _ZBufferParams.w);
}

============

far near那些之后补 下一次这里再遇到问题的时候。。。。

 

posted on 2017-06-13 16:19  minggoddess  阅读(187)  评论(0编辑  收藏  举报