首先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那些之后补 下一次这里再遇到问题的时候。。。。