vec4 <-> float32
2012-09-24 18:20
211 查看
r = clamp(int(2^8 * f), 0, 255); g = clamp(int(2^16 * f), 0, 255); b = clamp(int(2^24 * f), 0, 255); a = clamp(int(2^32 * f), 0, 255); f = (v.r) + (v.g / 2^8) + (v.b / 2^16) + (v.b / 2^32);
之前查了很多sm的资料和demo,很多程序都是用以上公式进行vec4->float的编码解码,然后写入gl_FragColor中,后来很无耻的发现,在使用FBO Depth attachment绘制深度的时候,ps根本就不用写任何shader,留一个空函数就可以了。深度会自动写入纹理中,另外值得注意的事情是,之前没成功是因为纹理设置了GL_COMPARE_R_TO_TEXTURE这个参数,导致深度没有正确写入,这个问题以后再论述,简单来说,纹理设置好Wraps/Filter/CompareFuc就ok了。具体的可以参照一下链接的Depth
ONLY。
http://www.opengl.org/wiki/Framebuffer_Object_Examples
另外的GLSL中你可能会用到一个非线性深度转成线性深度的小函数。
float LinearizeDepth(float d) { float n = 0.1; // camera z near\n float f = 500.0; // camera z far\n float z = d; return (2.0 * n) / (f + n - z * (f - n)); }之前
相关文章推荐
- html系统学习之二 <样式,锚>
- HTML <style>中一些常用的定义格式
- 学友新碟&lt;&lt;private corner迷你音乐会&gt;&gt;CD/DVD超赞呀
- Android Fragment 学习<2> 滑动TAb导航(无ActionBar)
- 构建Python+Selenium2自动化测试环境<一>
- 高德地图#import <MAMapKit/MAMapKit.h> file not found的报错解决办法
- struts2 用标签 <s:property value='[]'/> 取值 json 含有转义字符的解决方法
- .Net集合类的研究-有序集合(一)-SortedList、SortedList<TKey,TValue>
- Spring <context:annotation-config/> 解说
- <C++学习笔记>预处理功能
- ₪<jsp:include>与include指令的比较
- jquery mobile phonegap中页面跳转白屏及抖动的解决办法<script src="http://code.jquery.com/jquery-1.6.4.min.js"></scri
- 启动我自己的<Effective Python>系列文章
- 相同的代码在eclipse中编译成功,但是用ant编译失败。无法确定<T>T的类型参数;对于上限为int,java.lang.Object的类型变量T,不存在唯一最大实例
- struts1.3中<struts-config>报错
- java查询mysql的char字段List<Object[]>数据被截断
- 进程控制理论<四>---那些年我们一起学习linux程序设计 .
- JSTL标签之<fmt:formatDate/>使用介绍
- 哈希表Hashtable与字典表Dictionary<K,V>的比较。
- honey----- jstl中<c:forEach>的用法【没有试验过里面的例子,仅供参考】