计算机图形学课程笔记Lecture4 shading

定义

shading着色
对不同物体应用不同颜色,不同材质和光线有相互作用。

简单着色模型(点)(blinn-phong reflectance model)

光线分为三类:
specular highlights高光
diffuse reflection漫反射
ambient lighting环境光照,间接光照(简化设为常量)

对于每一个shading point
在这里插入图片描述
着色不考虑生成阴影(shadow),不考虑其他物体存在。
一个点,吸收一部分能量,呈现出的颜色是不吸收的颜色能量。。
0.表示是黑色的,完全吸收,不反射出去。

漫反射

在这里插入图片描述
在这里插入图片描述
每一圈都是一样的能量,所以和表面积成反比。
在这里插入图片描述
kd表示为rgb就可以定义当前点的颜色了。
不管从哪里看到,结果应该是一样的,漫反射项和眼睛的观察方向是无关的。
漫反射说明了接收到更多的能量,光照方向有关。
强调:
着色是在某个点上的;
各种方向,都是指的是单位向量;

高光

观察方向和镜面反射方向足够接近的时候,可以看到。
blin-phong中解释:
上述情况相当于在半程向量和法向量接近!
这个方便计算,所以被广泛使用~
在这里插入图片描述
高光项通常给定一定颜色,通常是白色的。
为什么上面要加上指数?
因为这个章节的第一句话,接近时候才可以看到高光~~
在这里插入图片描述

环境光照

太复杂了,就假设来自环境的光都想相同吧
ka任何一个点都有自己的颜色,ia就是环境的光强吧
注:这是个常数,说明了无论从什么角度观察都一样~
在这里插入图片描述

shading frequencies(着色模型怎么用)

着色频率
应用在哪些点/面上?
phong shading逐像素做着色
着色频率取决于本身的面的频率,每个像素做一次着色,
逐顶点
flat shading(shade each triangle)
gouraud shading(shade each vertex)
每个顶点有法向量
shade each pixel(Phong shading)
根据每个三角形插值法向量;
对每个像素进行着色
在这里插入图片描述
在这里插入图片描述

real-time rendering pipeline

图形渲染管线
从场景到一张图经历的过程
输入是一堆空间中的点,三维空间中的点形成三角形。
在这里插入图片描述
如何定义空间模型?
只用把三维空间中的点
着色是顶点类型,发生在顶点处理上;
phong等到所有像素都产生了再进行;
实时渲染界基本上都是在控制顶点和像素如何着色的。
在这里插入图片描述
shader program
能在硬件执行的语言,OpenGL可以来写shader
写通用的,一个顶点或者像素怎样就行。
GPU特点,并行计算;
渲染中像素很多做同样的运算,所以很适合在GPU上运行。

纹理映射

三角形内部填充了某张图。
在物体不同位置定义不同东西,定义任何一个点不同属性。
纹理坐标(u,v)
都在0-1之内。
纹理也可以多次使用,重复多次。
无缝贴图,设计纹理在多次重复使用时候,边界无缝衔接。
tilabe
三角形三个顶点对应(u,v)知道了,如何内部插值对应纹理坐标?
平滑过渡。
纹理是用来定义着色时候每个点不同的属性。不同的材质就是不同的着色方法。

重心坐标

为了做三角形内插值
~为甚?
希望在三角形内部做平滑过渡。
重心坐标在平面内x,y都可以用顶点ABC表示
在这里插入图片描述
重心坐标就是让上边的都是1/3
在这里插入图片描述
如果是三维的,应该先求重心坐标,然后再投影。

应用纹理

很高分辨率,纹理太小?
a pixel on a texture–a texel

纹理过小–双线性插值

黑色是纹理,红色是像素。

纹理过大–范围查询

超采样/mipmap
mipmap额外的1/3查询

高分辨率纹理
在这里插入图片描述
近似正方形区域,像素覆盖区域近似为正方形,边长L平均值,求出在第几层时候,区域大小1*1。
连续查询?
有第0,1层,如何查询0.5?
三线性插值
先找第0,再找1,然后再插值,双线性插值的值合在一起,然后再在层与层之间插值。
mipmap可以解决所有问题吗?
overblur
各向异性过滤(在各个方向上不同),开销是原来的三倍,将纹理多计算成不同的形状。
计算不同层。
逐渐收敛到3倍,和多少x关系不大,和计算力度无关,和显存开销有要求。
屏幕上像素映射到纹理上形状不是正方形。

2D纹理应用

整个环境光记录在球上,然后 将整个映射到立方体上,
在这里插入图片描述

凹凸贴图

可以定义任何不同位置不同属性,包括相对高度!
相对高度改变引起法线变化,shading就变化了,着色形成了明暗对比。

法线贴图

并没有改变几何信息,任何通过定义邻近位置的高度差,如何定义法线的改变?
flatland
任何一个点处,函数的导数
环境光存储在球面上,并且展开;/cube map

位移贴图

凹凸贴图没有改变顶点位置,位移贴图改变了。
位移贴图改变的是三角形顶点位置,需要模型跟得上。

3D纹理

定义了三维空间中的噪声函数;
记录之前已经算好的shading,
环境光遮蔽,可以计算好后放进
着色的结果*环境光遮蔽;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值