Real-RimeRendering(3)-纹理(Texturing)-创新互联
简介
在图形学中,Texturing是一个将物体表面绘制上图像或者其他数据的过程。纹理贴图通过修改物体表面的渲染效果,达到一种更加真实渲染的目的。
公司主营业务:网站设计、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出大通免费做网站回馈大家。渲染管线(Textureing Pipeline)
物体表面的渲染颜色由光照,材质,视口位置和透明度决定。纹理可以改变物体表面的颜色值,而凹凸(bump texture) 改变的是法线。
整个贴图的过程可以描述为一个贴图管线:
之所以把贴图的过程细分为几个阶段,是因为每个阶段都为程序员提供了可控制性。
以一个墙面的贴图为例,来描述整个阶段.
1.找到需要贴图的位置的空间坐标 (x,y,z) ;
2.将该位置进行投影,3D->2D, (x,y,x) -> (u,v) ,这个变换等同于将坐标乘以一个正交矩阵。
3. u,v 的坐标范围为 (0,1),这样做的目的是为了适应不同分辨率的纹理。u,v的值就用于确定该点的颜色值,通过查找内存中的纹理,将 u,v 由转换到纹理的二维坐标上(相乘就行),就可以确定颜色值了,这个值就是物体的 diffuse color。
投射过程(Projector function)
纹理管线的第一个过程就是获取物体表面的空间坐标,然后投影到(u,v)空间上,uv空间是纹理的二维空间,(u,v)坐标通常是由3D设计师通过3D建模工具来标定的,这个过程通常称为uv展开,目的就是生成纹理坐标。投影的方法包括球投影,圆柱投影,平面投影。
在非交互行的渲染中,贴图过程就在渲染过程中,整个场景可能就只使用一种贴图方式,但通常设计师会把模型进行分割并对各个模型使用不停的贴图方法。在实时渲染的时候,投影过程通常在建模阶段完成,而投影的结果会存储在顶点中,或者在shader中完成,这样就可以实现动态的贴图,比如环境贴图 (environment mapping).
虽然有很多种方法来实现贴图,但是思路都是一样的:通过插值来确定便面的参数,然后去查找对应的纹理值。
依附阶段(Corresponder function)
插值节点能够将参数空间的组表(u,v)转化到纹理空间坐标,这将为赋材质提供很大的灵活性,很常用的一个功能就是3d游戏中的换妆。
常用的一种依附方式就是矩阵运算,可以在shader中进行,另一种情况是控制纹理在问题贴不到的地方的处理方式,在OpenGL中该控制由 glTexParameter来实现。
纹理值(Texture value)
依附阶段之后就可以得到 u,v 的坐标了,通过u,v 的坐标和纹理贴图就可以很容易地得到颜色值,大部分渲染中使用的都是图像纹理,一维,二维或者三维,但是在procedual texture中是不同的,在procedual texturing 中,并不是查找内存中的纹理值来得到rgb值的,而是通过计算获得。
关于颜色信息的表示,最简单的就是Rgb值,虽然也可以使用灰度值,那就是黑白画了。还有就是Rgba,a表示alpha,多出一个值来表示透明度。法线贴图中,还有更多的颜色信息。
贴图缓存(Texture catching)
在复杂的应用中,可能需要用到大量的贴图,用于存放纹理的高速缓存依硬件的不同而不同,但总归一句话 - 不够用。解决的方法有很多,总归一句话:寻找平衡点。
一种策略是将纹理的体积设计得很小,牺牲一些精度,即使一次性全部加载到内存中也OK,典型的用空间换时间。
还有就是利用OS中的内存调度策略了,比如LRU (Least recently used)。每一次加载纹理的时候都给该纹理一个时间戳,当需要加载新的纹理的时候,如果内存够用,直接加载,不够用就把最久未使用的那个纹理踢除,然后加载。
加载纹理会耗费可观的时间(从硬盘到内存当然耗时啊!),大部分情况下不可能一次性加载全部纹理,一种解决方案就是预加载。
参考
Real-Time Rendering 3rd
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章题目:Real-RimeRendering(3)-纹理(Texturing)-创新互联
URL标题:http://pwwzsj.com/article/digddi.html