计算机图形学 着色(shader) 学习笔记
创始人
2024-05-01 07:33:29
0

画家算法:从远到近的光栅化,近的物体的着色覆盖远的物体的着色,近的物体的RGB优先 


实际计算机图形学使用的是Z-Buffer深度缓冲

先看地板,地板要渲染的像素先放进二位数组内,接下来要看正方体,正方体与之前地板的像素位置要近,那么将对应的地板像素的二位数组像素给覆盖成正方体的像素吗,如下图:

小正方形内的数字代表距离相机的远近程度,越近的就将远的像素信息给覆盖掉 

r是离光源的半径,离光源越远,Ld(漫反射光源的强度,其他各种光照通过各种反射最后到该位置的亮度强度)值越小,由于n, l为单位向量,n与l的点集就为n的模乘以l的模乘以cos,则角度越大,接触的通光量则越少,则光亮度越弱,由于不考虑光线折射,cos角度大于180的场景(大于180°后点集值为负),所以做了一个max(0, n ^ l)的操作,Kd是漫反射的颜色

上图为颜色强度越来越强的效果图 

现在给Ls(高光向光源强度,最亮的光源到该位置的亮度)增加一个系数p,目的是防止太远的物体也能受到反射光的影响,如下图,将cos的幂提高即可有效满足远处物体不受反射光效果影响的目的

 

最后一个就是收到环境光的影响La,相当于整个环境都存在一个常量的光,让整个场景不至于一点东西都看不见而存在的La

由La(环境光)+ Ld(漫反射光)+ Ls(高光)综合相加而决定的最后的光照强度


渲染管线:

1、通过各种Rotation、Scale、Translation等操作过后生成各个三维的空间

2、通过相机把三维空间位置先压缩到单位为2的正方体内

3、将正方体内的空间通过[ width / 2, 0, 0 width / 2 ]的矩阵将三维空间的X,Y轴上的点变换到屏幕

                                         [ 0, height / 2, 0, height / 2 ]

                                         [ 0, 0, 1, 0 ]

                                         [ 0, 0, 0, 1 ]

4、再次通过Z-Buffer的算法将Z轴的坐标,画到屏幕上

5、通过采样,将要渲染的像素进行标示出来,由于采样会由锯齿,所以通过模糊再采样的形式减少抗锯齿带来的视觉影响。

6、shader着色(考虑环境光、漫反射光、强光影响),将RGB颜色画在各个像素上完成渲染管线


Texture Mapping(纹理映射):

Texture Mapping会使用到重心坐标,以下为重心坐标公式:

 我们设G为重心点,那么Aa为CGB的面积,Ab为ACG的面积,Ac为AGB的面积

也可以用以上公式进行计算 

重心坐标的应用:在重心坐标与三角形的三点之间做POSITION、TEXTURE、COLOR等信息的插值,让信息能够平滑的过度到三角形顶点上 

通过uv查找到纹理对应的颜色,然后把texcolor与漫反射的Kd颜色进行一个替换,就可以应用上对应的纹理了

 当纹理小,平面大的情况下,会造成像素拉伸,处理办法为双向插值,找到原像素位置周围四个像素,在红点和上下左右方向进行颜色等信息的插值。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...