OpenGL,z值转深度值计算
来源:互联网 发布:mac怎么查看隐藏文件夹 编辑:程序博客网 时间:2024/05/16 01:38
翻译:
Real depth in OpenGL / GLSL - Before I Forget…
主要是记录一下这个公式.
A = -(zFar + zNear) / (zFar - zNear);B = -2*zFar*zNear / (zFar - zNear);z_n = -(A*z_e + B) / z_e; // z_n in [-1, 1]z_b = 0.5*z_n + 0.5; // z_b in [0, 1]
A 和B分别是投影矩阵的3行3列和4列.那么z_n 就是点在vertex Shader最终输出的gl_position 做透视划分后的向量的z值.
通常线性照相机模型最后Project矩阵左乘顶点向量后gl_position值变成:
[don't care, don't care, Az+B, -z]
然后顶点shader跑完,openGL自动做透视划分:
化简就得到z_n的公式了.
z_b 是把透视划分后的点从[-1,1]映射到[0,1](深度缓存值范围).感觉非常多余….
用这个方法可以解决绘制同一个物体时被前面遮挡的问题.例如我只要视野内球体内部.其截面法线垂直于我的视线:
0 0
- OpenGL,z值转深度值计算
- OpenGL: 深度缓冲区-Z缓冲区
- OpenGL中的深度值winz与相机空间z值的关系推导
- opengl glsl 深度计算
- OpenGL 深度缓冲区 Z缓冲区 介绍
- OpenGL 深度缓冲区 Z缓冲区 介绍
- OpenGL 深度缓冲区 Z缓冲区 介绍
- OpenGL: 挑选和深度值
- 计算SM2 Z及E值
- OpenGL通过读取Z Buffer深度值将屏幕2D坐标转化为场景3D坐标(含完整源码)
- OpenGL通过读取Z Buffer深度值将屏幕2D坐标转化为场景3D坐标(含完整源码)
- OpenGL: 深度冲突(Z-Finghting or Depth Fighting)的解决
- OpenGL深度测试带来的问题----Z冲突
- OpenGL: 深度冲突(Z-Finghting or Depth Fighting)的解决
- 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值
- OpenGL深度测试与深度缓冲以及Z-fighting的消除
- webpack 打包css z-index值被重新计算
- Unity根据深度值计算世界坐标
- 利用docker-compose实现elk+redice的但宿主机环境搭建
- 矩阵基础1001 HDU 4990
- Convolutional neural networks(CNN) (一) 入门参考
- 矩阵基础1002 CodeForces 450B
- 【Maven用户手册】Maven生命周期
- OpenGL,z值转深度值计算
- Python图表绘制:matplotlib绘图库入门
- mysql的安装和用户权限
- android studio 怎么引入签名文件
- 矩阵基础1003 HDU 4965
- Java学习之Iterator(迭代器)的一般用法 (多方整理)
- pdo事物回滚
- ArcGIS Engine 10.0 for.NET开发学习笔记(八)
- 【Maven用户手册】Maven生命周期