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

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

     环境贴图 Environmental map

    假设是无限远的

    spherical environment map:把环境光记录在球面上

    也可以记录在立方体上

    在不把集合形体变复杂的情况下应用纹理形成凹凸不平的效果(作假的法线)

     法线贴图/凹凸贴图 Bump Mapping

    Displacement mapping 位移贴图

    直接改变三角形顶点的位置

  • 相关阅读:
    Python数据容器(列表)
    (附源码)php校园寝室分配查询系统 毕业设计 032027
    安全狗受邀出席CIS 2022网络安全创新大会
    玩转SQL:咱们的目标是成为SQL方面的“扫地僧”
    sqrt函数的实现
    debian/ubuntu 编译安装nginx php
    只要掌握这2个方法,就能轻松学会如何提取伴奏,快来码住
    Postman汉化教程
    开发者的第一台服务器 ECS云服务器低至99元:新老同享
    为什么有的人说技术不重要,有的人说重要?
  • 原文地址:https://blog.csdn.net/Scabbards_/article/details/133798311