图形学--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

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

相关推荐
子辰ToT15 天前
LearnOpenGL——PBR(三)漫反射辐照度
笔记·图形渲染·opengl
dgaf17 天前
DX12 快速教程(15) —— 多实例渲染
c++·microsoft·图形渲染·visual studio·d3d12
子辰ToT19 天前
LearnOpenGL——高级光照(七)HDR
笔记·图形渲染·opengl
拿我格子衫来22 天前
gerber 文件的概念
图形渲染
Love Song残响23 天前
影视工厂渲染优化指南:提升效率与降低成本的实用策略
图形渲染
John_ToDebug1 个月前
像素的生命之旅:深度解析Chrome渲染管线的完整架构
chrome·架构·图形渲染
3DVisionary1 个月前
掌控发动机“心脏”精度:蓝光3D扫描在凸轮轴全尺寸检测中的应用
3d·图形渲染·汽车发动机·精密测量·蓝光3d扫描·凸轮轴检测·形位公差
玖釉-1 个月前
探索连续细节层次(Continuous LOD):深入解析 NVIDIA 的 nv_cluster_lod_builder
c++·windows·图形渲染
玖釉-1 个月前
核心解构:Cluster LOD 与 DAG 架构深度剖析
c++·windows·架构·图形渲染
玖釉-1 个月前
深入浅出:渲染管线中的抗锯齿技术全景解析
c++·windows·图形渲染