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

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

相关推荐
Frank学习路上15 小时前
【C++】OGRE:面向对象图形渲染库配置与示例
c++·图形渲染·ogre
Padid8 天前
Unity SRP学习笔记(二)
笔记·学习·unity·游戏引擎·图形渲染·着色器
refineiks14 天前
three.js绘制宽度大于1的线,并动态新增顶点
3d·图形渲染·webgl
Winston Wood17 天前
一个简单的例子,说明Matrix类的妙用
android·前端·图像处理·图形渲染
森龙安17 天前
VulkanTutorial(8·Shader modules)
图形渲染
云渲染图科普匠19 天前
3d室内设计效果图渲染平台哪个好?瑞云快图怎么样?
3d·图形渲染·3dsmax
先知demons20 天前
antvG6如何实现节点动画、连线动画、切换节点图标
前端·javascript·vue.js·图形渲染·canva可画
3DCAT实时渲染云21 天前
边缘计算技术的优势与挑战
实时互动·边缘计算·图形渲染
大耳猫24 天前
Android OpenGL天空盒
android·kotlin·android studio·图形渲染
大耳猫1 个月前
Android OpenGL触控反馈
android·kotlin·android studio·图形渲染