GAMES101学习笔记(五)遮挡与着色

一、遮挡(Visibility / occlusion)

        我们如何在计算机上画出图形的遮挡关系。一种方法是画家算法--指从远到近,不断用近处的物体覆盖掉远处的物体,但是利用画家算法时会遇到,当远近差不多的几个面的绘画的先后顺序会导致图像的差异,例如:

         为了解决这样的问题,人们发明了深度缓存(Z-Buffer)

        1.1 深度缓存(Z-Buffer)

        这个算法的本质思想就是,生成一个渲染图和一个深度缓存图,一个像素一个像素的进行比对z轴最大的,但是,为了简化计算,我们认为,z轴值永远为正,这样的话,z值最小的就是离我们最近的。例如:

        以多个三角形的遮挡为例,在一开始,我们认为像素的距离都是无限远的,我们对每个三角形进行遍历,记录像素在三角形内的z值,如果遇到更小的z值,则覆盖原有的z值,并且把这个像素画进去:

        结合MSAA反走样的操作,还可以对采样点而不是像素进行深度测试

二、着色(Shading)

        着色的定义:引入明暗关系和颜色关系的过程。我们的课程中定义为,对不同的物体应用不同的材质的过程为着色

        对于同一物体上的相同颜色的部分,我们看见的却不一定是同一颜色

        2.1 一个简单的着色模型--Blinn-Phong Reflectance Model

        

        先定义一些概念:

        v为观测方向,l为光源方向,n为表面法线方向,对于这个着色点本身,定义一些相关的量,比如颜色,光亮度等

注:着色具有局部性,不考虑光线投射导致的阴影,而只看重物体本身的变化:

                2.1.1 漫反射

 

        有一束光线打在物体表面,然后向四面八方反射就是漫反射

        当物体偏转时,打在物体某一表面的光线会减少,从而导致亮度变暗

        根据Lambert‘s cosine law,物体表面接受到的能量与光源方向和法线方向的余弦成正比 

        这里的 I / r^2 代表光线传播到着色点的能量,max(0,n·l)代表着色点接受的能量,因为n·l的负值无意义,所以这里取0和n·l的最大值,kd代表着色点接受的能量有多少被吸收,Ld表示经过漫反射之后的光线能量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值