Games101-5 shadering
shader
- 对不同物体应用不同的材质
定义:

shading != shadow
diffuse reflection 漫反射
光照角度不同,则反射程度也不同

于此同时物体离光源越远,反射程度越低



高光项
镜面反射和视线比较接近的时候
使用半程向量计算高光

注:
- 半程向量比较好算,反射向量比较难算
- 指数 p : cos 容忍度太高了,光斑太大 --- 200 - 600


ambient term 环境光


shading frequencies




定义法线
定义每个顶点的法线

定义每个像素的法线

渲染管线

Texture mapping -- 纹理映射


shadertoy.com
https://youtu.be/XuSnLbB1j6E
Texture Mapping
不同材质的漫反射系数不同。 三维物体的表面都是二维的



UV坐标系 --- 都在 0-1, 每个三角形的顶点都对应一个UV坐标

重心坐标 barycentric coordinate
在三角形内做插值
obtain smoothly varying values across triangles

常数 为非负数


根据面积计算

使用重心坐标进行插值

问题: 投影之后重心坐标会改变--- 不能对投影之后的三角形计算重心。
使用 texture

问题:
texture Magnification 纹理放大。

查找纹理的时候我们希望更加连续一点。
- 使用双线性插值



Bicubic
临近的16个
texture is too big




mipmap
allowing (fast approx square) range queries


计算 mipmap 的level




如果在 1.8层 这种非整数层 --- 使用三线性插值计算
Trilinear interpolation

三线性插值 的 资源消耗很小,但是效果很好

mipmap 的限制
overblur

解决方案 -- anisotroptic filtering 各项异性过滤 ---部分解决


EWA 过滤

纹理的应用


问题: 贴图会扭曲。


凹凸贴图

法线贴图



位移贴图

3D噪声


三维纹理


浙公网安备 33010602011771号