Games101 着色笔记(一):模型和纹理

什么是着色:
The process of applying a material to an object.
对不同物体应用不同材质的过程,不同的材质与光线有不同的相互作用。

着色是局部的! 阴影的产生与着色无关,着色不考虑其他物体的存在

Blinn-Phong着色模型(Blinn-Phong Reflectance Model):
特点:逐像素着色
在这里插入图片描述
Specular highlights:高光部分,镜面反射
Diffuse reflection:漫反射部分,光线均匀发散的部分
Ambient lighting:环境光照部分,接收的不是直接光照,而是间接反射光。

(1)漫反射部分:
在这里插入图片描述
以下都是单位向量:
shading point:位于物体表面,具有一些平面本身,决定颜色的属性,面积大小为单位面积。
L:shading point向光源的方向
V:观测方向
n:物体表面法线,光线与物体表面法线的夹角为0时,物体表面接收到最多的能量。

满反射获得能量表示方法:
距离点光源为r处获得的能量:I/r²
在这里插入图片描述
shading Point获得的能量:
I/r² :光源发射到shading Point处的总光能
max(0,n*l):l·n决定具体有多少能量被吸收,取决于光线与法线的角度
kd:漫反射系数,决定颜色
因为漫反射均匀发散,所以观察到的结果不取决于观察者的位置
在这里插入图片描述

(2)高光部分:
特点:高光接近镜面反射,当观察方向与镜面反射方向接近时即观察到高光。
因此入射光线与反射光线的半乘向量接近法线,因此衡量能否看到高光依据半程向量与法线是否接近即可。
在这里插入图片描述
ks:镜面反射系数,高光一般是白色。
n·h:决定的是半程向量与法线是否足够接近,镜面反射模型简化掉l·n的计算。
指数p:限制高光范围,因为cos的”容忍度“太高,如下图所示:
在这里插入图片描述
在Phong模型中,p一般在100~200之间。

(3)环境光部分:
特点:假设任何点接收到的环境光照都是相同的,和观测方向无关。
作用:保证没有地方是黑的,提升一个亮度
在这里插入图片描述
ka:环境光系数
Ia:环境光强度

(4)总公式:
在这里插入图片描述

其他着色模型
1、Flat-shading:逐三角形着色
2、Gouraud shading:逐顶点着色
Phong着色开销较大,在一些应用场景,如模型足够复杂,逐面和逐顶点的着色频率较高,效果也未必就次于Phong。

顶点法线的计算:
分情况讨论
(1)如果已知是用三角形模拟物体(比如模拟一个球),则直接按照球的方法计算法线即可。
(2)每个顶点都和很多三角形有关联,则顶点的发现可认为是对应面的法线求平均

在这里插入图片描述
得到顶点发现后,求内部像素的法线–>重心坐标

实时渲染管线
什么是图形管线?–> 从场景到图,中间经历了什么过程:
(1)将点投影到屏幕上,连接成三角形
(2)三角形光栅化
(3)对三角形进行着色(如果是逐像素,如Phong,是在光栅化后着色;如果是逐顶点,则在顶点处理后着色)
Shader:
现代GPU部分可编程,决定像素或顶点如何着色的代码叫做Shader,决定顶点的叫VertexShader(顶点着色器),决定像素的叫PixelShader(像素着色器),Shader是一个通用的程序,不针对单个像素。
在这里插入图片描述
PixelShader示例:在这里插入图片描述
GLSL:openGL的一个着色语言
一个网站:ShaderToy

纹理映射
每一个三维物体都有一个基于表面的二维坐标:
在这里插入图片描述
这个表面,叫做纹理(texture),作用是定义着色时不同点的属性。
纹理映射:将纹理”蒙“在物体表面的过程,纹理坐标又称uv坐标,u和v的范围都在(0,1),三角形三个顶点,每个顶点都对应一个uv坐标:
在这里插入图片描述
不同位置映射到相同的纹理:
在这里插入图片描述
知道三角形三个顶点的uv坐标,如何求解内部点的uv?还是插值。
什么是插值:三角形的三个顶点有不同的属性,将属性在三角形内部做平滑过渡的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值