[opengl笔记]2017年08月19日
来源:互联网 发布:linux的syslog开启 编辑:程序博客网 时间:2024/05/20 05:26
问题一:从深度值获取世界坐标
我确定很多的例子也是这么干的。
但是结果位置歪曲了并且当从原点移动camera的时候变得更糟糕,破坏了光照。
回答一:
你应该用glfragcoord的z来计算或者预先算出z坐标
A.z应该是索要的z值
回答二:
你的代码看起来运行的很慢,但是是比较好的解决方式。screenUVs是如何算出来的
你是否传递的是渲染场景的世界坐标?也许可以试试在CPU上计算inverse-view-proj并且传给着色器。
由深度恢复坐标一般在后处理/延迟着色系统较为常见,上个回答中glfragcoord是不能获取的,并且像素的世界坐标没有其它办法可以获取。
追问:
screenuvs是屏幕坐标上的0-1值,
当我使用一个明确的世界坐标下的缓存并且正确显示,我认为是读取到了正确的uv。
我使用了cpu inverse view proj但是并没有什么改变。
这很奇怪了,因为当相机很远时又正常了。
。。。。。
后来提问者找到了原因,原来是:
glDepthRangef被设置为0.1f and 1000.0f
设置为0.0f and 1000.0f.固定了位置重建。
回答三:
glDepthRangef用于NDC-》depth-texture transform,通常取值0-1,最好不要动它。
回答四:
引用了定义:
我确定很多的例子也是这么干的。
但是结果位置歪曲了并且当从原点移动camera的时候变得更糟糕,破坏了光照。
回答一:
你应该用glfragcoord的z来计算或者预先算出z坐标
A.z应该是索要的z值
回答二:
你的代码看起来运行的很慢,但是是比较好的解决方式。screenUVs是如何算出来的
你是否传递的是渲染场景的世界坐标?也许可以试试在CPU上计算inverse-view-proj并且传给着色器。
由深度恢复坐标一般在后处理/延迟着色系统较为常见,上个回答中glfragcoord是不能获取的,并且像素的世界坐标没有其它办法可以获取。
追问:
screenuvs是屏幕坐标上的0-1值,
当我使用一个明确的世界坐标下的缓存并且正确显示,我认为是读取到了正确的uv。
我使用了cpu inverse view proj但是并没有什么改变。
这很奇怪了,因为当相机很远时又正常了。
。。。。。
后来提问者找到了原因,原来是:
glDepthRangef被设置为0.1f and 1000.0f
设置为0.0f and 1000.0f.固定了位置重建。
回答三:
glDepthRangef用于NDC-》depth-texture transform,通常取值0-1,最好不要动它。
回答四:
引用了定义:
"The setting of (0,1) maps the near plane to 0 and the far plane to 1. With this mapping, the depth buffer range is fully utilized."
意味着无需改变。
阅读全文
0 0
- [opengl笔记]2017年08月19日
- [opengl笔记]2017年8月17日
- [opengl笔记]2017年8月18日
- 牛客网 刷题笔记2017年1月19日
- 2017年10月19日训练笔记
- 2017年11月19日训练笔记
- 2014年9月19 日笔记
- 2017年10月11日笔记
- 2017年10月12日笔记
- 2017年10月12日笔记
- 2017年10月17日笔记
- 2017年10月26日笔记
- 11月18日 & 11月19日课堂笔记
- PHP自学笔记01----2014年05月08日
- C#学习笔记 2007年12月19日
- 2010年9月19日学习笔记
- 2013年3月19日VC++学习笔记
- 2015年1月19日《linux程序设计》笔记--命令
- UVA 1152 4 Values whose Sum is 0 (二分)
- minimum-depth-of-binary-tree
- AQS源码分析
- 2017电赛板球系统比赛经历
- SqlServer 2008中time类型的使用方法
- [opengl笔记]2017年08月19日
- CUDA 8.0 安装
- oracle中的部分要点
- Spring之路-初识IOC
- FCN
- noip2013day1题解
- 流行编程语言的详细对比(10)--线程同步
- [Leetcode] 105, 106, 96
- 久违的总结