图形学--shading着色

概念:对不同物体应用不同材质

llumination

shading着色

Blinn-Phong reflectance model

Diffuse Reflection 漫反射

光打到了shading point上然后光线四面八方均匀散射

图形学--shading着色_第1张图片

图形学--shading着色_第2张图片

图形学--shading着色_第3张图片

光源会根据光源传播的距离进行一定的能量衰减

图形学--shading着色_第4张图片

按球的表面积来算,吸收的能量和光的角度有关系

图形学--shading着色_第5张图片

max(0,n`1)是因为当它是负数的时候就没有物理意义了

漫反射和观察的视角完全没有关系!

Specular Term 高光

观察的方向和镜面反射(v和R)接近的时候可以看到高光(死去的物理突然开始攻击我

图形学--shading着色_第6张图片

好聪明啊,直接拿半程向量是否接近法线来算,简化了计算

图形学--shading着色_第7张图片

为啥有个指数p呢↑↓缩小高光范围!(一般这个指数是100~200)

图形学--shading着色_第8张图片

图形学--shading着色_第9张图片

上图中ks是亮度

Ambient Term 环境光

假设任何一个点接收到的来自环境的光永远相同

图形学--shading着色_第10张图片

所有的光合起来↓:

环境光(常数颜色)

漫反射光(和观测角度无关,和光照和法线角度有关)

高光

图形学--shading着色_第11张图片

着色频率 Shading Frequencies

flat shading

对面

图形学--shading着色_第12张图片

Gouraud shading

对顶点

图形学--shading着色_第13张图片

Phong shading

对每一个像素

图形学--shading着色_第14张图片

Per-Vertex normal Vectors 逐顶点法线

图形学--shading着色_第15张图片

Per-Pixel Normal Vectors 逐像素法线

***记得归一化!把法线变成单位向量!

图形学--shading着色_第16张图片

Graphics Pipeline 实时渲染管线

图形学--shading着色_第17张图片

Vertex Processing

MVP变换

图形学--shading着色_第18张图片

Rasterization

图形学--shading着色_第19张图片

Fragment Processing

图形学--shading着色_第20张图片

图形学--shading着色_第21张图片

Shader Programs着色器

定义顶点/像素/片段进行操作

图形学--shading着色_第22张图片

推荐网站:shadertoy

Shadertoy BETA

Texture Mapping 纹理映射

三维物体的表面(Surfaces)是2D的!

把三维空间中,实际上是二维的物体表面贴上一张图

纹理坐标系(u,v)

一般默认u和v的范围都是0~1

纹理也可以在一个场景里多次重复使用!

Interpolation 插值

一般的计算都是在三角形顶点上,而插值决定了点与点之间的平滑过渡

Barycentric coordinates 重心坐标

三角形平面内任何一个点都可以理解为ABC三个坐标的线性组合

图形学--shading着色_第23张图片

注意 ,在三角形内α,β和γ满足>=0,如果α+β+γ=1只能说这个点跟这个三角形同平面

e.g A的重心坐标是(1,0,0)

α,β和γ也可以通过面积求出

图形学--shading着色_第24张图片

重心把三角形分成了等面积的三个三角形

图形学--shading着色_第25张图片

图形学--shading着色_第26张图片

有种梦回高中的感觉

图形学--shading着色_第27张图片

要在投影前做插值!!!!!因为投影后坐标可能会变!如果已经三维了那么请使用逆变换

Texture queries

Diffuse Color

图形学--shading着色_第28张图片

Point sampling texture 问题

Texture Magnification 纹理放大

图形学--shading着色_第29张图片

纹理上的像素 --texel(纹理元素,纹素)

解决方法:找到非整数坐标的值

Bilinear Interpolation 双线性插值

之前刚好写了篇博客讲怎么算的(感觉其实图形学和cv之间还挺多交集的)双线性插值以及计算_Scabbards_的博客-CSDN博客

这里2d的是取临近周围四个

图形学--shading着色_第30张图片

Application of textures

Bicubic取临近周围十六个

纹理缩小

思路1:走样虽然可以用很多采样点解决,但是计算量太大了

思路2:避免采样

Point Query 点查询vs Range Query 范围查询

Mipmap 多级贴图

用于在近似的范围内做范围查询

先把纹理在渲染之前处理一遍

图形学--shading着色_第31张图片

mipmap 在cv里面叫image pyramid

图形学--shading着色_第32张图片

这些层加起来也只是原存储量的4/3

图形学--shading着色_第33张图片

图形学--shading着色_第34张图片

mipmap原理:放大后的像素可以在相同大小的mipmap上面查询那个位置的平均值,在log2L层上面查询

可视化↓

图形学--shading着色_第35张图片

解决层数之间区别的方法:插值

Trilinear Interpolation 三线性插值

两个双线性插值后面再将两次结果做一次双线性插值

图形学--shading着色_第36张图片

ambient terms

缺点:overblur(过于模糊)
Anisotropic Filtering 各向异性过滤

可以查询原始图像的矩形区域而非限定在正方形区域

图形学--shading着色_第37张图片图形学--shading着色_第38张图片

对于上图中斜着的也有过滤方法:

EWA

拆成很多圆形去覆盖不规则形状

图形学--shading着色_第39张图片

你可能感兴趣的:(图形学笔记,图形渲染)