摘要:
Multiple Render Target(MRT)是一种指可以使绘制程序在单帧中同时渲染多个Render Target,也就是一次Draw可以将不同的信息分别画入多个Surface。是利用Pixel Shader实现Post-Process效果中很重要的一部分。 如在上一篇Pixel Motion Blur中,单帧渲染中返回了场景中原有的画面颜色同时还有该像素点的运动速度,超出单一Surface所能表现的数据宽度的部分就是通过Multiple Render Target渲染到另一个Surface上,有了Multiple Render Target的支持,我们在Pixel Shader中就. 阅读全文
摘要:
这个比较基础了,不过基础最重要,往往应该理解透彻,并且反复复习。 我们知道在3D画面渲染过程中对于模型的计算的一部分被称为Transforming and Lighting(T&L)阶段,其中Lighting表示光照,而Transforming就是指的坐标变换,这两部分的计算也是3D场景中计算最重要基础的一步。 空间坐标变换主要的工作就是将处于局部坐标系的模型转换到用户屏幕所在的屏幕坐标系内。 而这个过程的计算上主要是来自线性代数中的知识,我们知道在线性代数中,线性的变换是可以用矩阵来表示的,而通过将向量[x,y,z,w]同变换矩阵相乘即可完成相应的变换,这正是我们实现空间坐标变换的数 阅读全文
摘要:
环境映射是一种用来模拟光滑表面对周围环境的反射的技术,常见的如镜子、光亮漆面的金属等等。 这种技术的实现主要通过将一张带有周围环境的贴图附在所需要表现的多边形表面来实现的。目前在实时3D游戏画面渲染中经常使用的有两种环境映射。 球形环境映射(Spherical Environment Mapping) 球形环境映射是模拟在球体表面产生环境映射的技术,通过对普通贴图的UV坐标进行调整计算来产生在球体表面应产生的扭曲。 UV的计算利用球体表面的法线来计算。计算公式如下: u=Nx/2+0.5 v=Ny/2+0.5 计算公式中的Nx和Ny是表面法线的x和y分量,除以2将区间限制在[-0... 阅读全文
摘要:
好吧,既然顶点变换都花那么多时间写了,把光照也写了吧。 不过这个比起顶点变换应该好写多了,至少不用画那么多矩阵和公式了。 经过是空间坐标变换的模型的位置和角度得到了正确的诠释,但是这些信息只够我们来绘制模型的边框,对于物体表面的细节表现,就无能为力了,这就需要我们来进行光照的计算。 实时渲染的游戏画面通常使用经典的Phong光照模型来进行计算,不同的情况下可能计算的公式会有细微调整,但都是利用环境光+漫反射光+镜面反射光的模型来描述光对物体表面的影响。 环境光 环境光主要模拟场景中普遍存在的光源和各个物体反射过来的光线,位于理想的模型中的环境光是均匀的分布在场景的各个角落,均匀的照射在... 阅读全文
摘要:
Tone Mapping原是摄影学中的一个术语,因为打印相片所能表现的亮度范围不足以表现现实世界中的亮度域,而如果简单的将真实世界的整个亮度域线性压缩到照片所能表现的亮度域内,则会在明暗两端同时丢失很多细节,这显然不是所希望的效果,Tone Mapping就是为了克服这一情况而存在的,既然相片所能呈现的亮度域有限则我们可以根据所拍摄场景内的整体亮度通过光圈与曝光时间的长短来控制一个合适的亮度域,这样既保证细节不丢失,也可以不使照片失真。人的眼睛也是相同的原理,这就是为什么当我们从一个明亮的环境突然到一个黑暗的环境时,可以从什么都看不见到慢慢可以适应周围的亮度,所不同的是人眼是通过瞳孔来调节亮度 阅读全文
摘要:
老早就想实现 Depth of field 的效果了,这几天终于有点时间来好好学习并加以实现。使用的是Render Monkey 1.71, Render Monkey的sample里的DOF的稍微有点复杂,不过效果很漂亮。我觉得只要知道了原理并实现了基本的效果就可以了o(∩_∩)o...一共分为4个pass 前两个pass效果一样 在两个不同的位置渲染两个teapot到BackBuffer这张纹理,并保存下相对聚焦区域的深度值 //渲染物体的VS代码structVS_OUTPUT{float4Pos:POSITION;float2Tex:TEXCOORD0;float3View:TEXCO. 阅读全文
摘要:
原文链接: http://www.ownself.org/oswpblog/?p=50 算法原理来自ATI实验室Guennadi Riguer、Natalya Tatarchuk、John Isidoro的论文“Real-Time Depth of Field Simulation”,本文只是对原理和过程进行简述,具体内容请参见原文。 我们知道视频游戏追求的目标就是完全真实的画面,但是早先的大部分游戏的画面在看上去似乎都缺了些什么,让画面看上去在任何角度任何距离都是完全锐利的,而这种情况在现实中是不存在的,因为有景深的存在。完全锐利的画面虽然完美,但是却让人看上去感觉不真实,这是因为在现实世. 阅读全文