图形学--shading着色

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

llumination

shading着色

Blinn-Phong reflectance model

Diffuse Reflection 漫反射

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

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

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

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

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

Specular Term 高光

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

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

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

上图中ks是亮度

Ambient Term 环境光

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

所有的光合起来↓:

环境光(常数颜色)

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

高光

着色频率 Shading Frequencies

flat shading

对面

Gouraud shading

对顶点

Phong shading

对每一个像素

Per-Vertex normal Vectors 逐顶点法线

Per-Pixel Normal Vectors 逐像素法线

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

Graphics Pipeline 实时渲染管线

Vertex Processing

MVP变换

Rasterization

Fragment Processing

Shader Programs着色器

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

推荐网站:shadertoy

Shadertoy BETA

Texture Mapping 纹理映射

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

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

纹理坐标系(u,v)

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

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

Interpolation 插值

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

Barycentric coordinates 重心坐标

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

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

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

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

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

有种梦回高中的感觉

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

Texture queries

Diffuse Color

Point sampling texture 问题

Texture Magnification 纹理放大

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

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

Bilinear Interpolation 双线性插值

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

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

Application of textures

Bicubic取临近周围十六个

纹理缩小

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

思路2:避免采样

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

Mipmap 多级贴图

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

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

mipmap 在cv里面叫image pyramid

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

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

可视化↓

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

Trilinear Interpolation 三线性插值

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

ambient terms

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

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

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

EWA

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

相关推荐
m0_748234341 小时前
webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式
图形渲染·webgl
每日出拳老爷子1 小时前
【图形渲染】【Unity Shader】【Nvidia CG】有用的参考资料链接
unity·游戏引擎·图形渲染
木市门8 天前
【GAMES101笔记速查——Lecture 22 Animation Cont】
图像处理·笔记·图形渲染
不知不道abc10 天前
图形学笔记 - 5. 光线追踪 - RayTracing
笔记·图形渲染
红米饭配南瓜汤14 天前
Android显示系统(08)- OpenGL ES - 图片拉伸
android·音视频·图形渲染·媒体
星星也在雾里15 天前
Windows系统配置Panda 3D
python·3d·游戏引擎·图形渲染
qq_1674015116 天前
glsl shader texture atlas
图形渲染
红米饭配南瓜汤16 天前
Android显示系统(06)- OpenGL ES - VBO和EBO和VAO
android·音视频·图形渲染·媒体
红米饭配南瓜汤19 天前
Android显示系统(02)- OpenGL ES - 概述
android·音视频·图形渲染
Little丶Seven1 个月前
Unity UGUI原理剖析
ui·unity·图形渲染