记录一下,第一篇博客2024年7月26日下午。

计划在毕业后从事游戏开发的工作,现在在学习龙书dx12,平时会写一些对龙书内容上的一些理解。在读完全书之后,会考虑进行一次龙书相关的总结,不过这应该要很长一段时间吧。

在写龙书的blog之前,先从games101开始入手。

参考blog:https://www.yuque.com/gaoshanliushui-mbfny/sst4c5/agupih#8af4f8bb

-2.16

05光栅化

三角形?

• 最基础的多边形 (其他图形可分解为三角形)

• 为一个平面

• 内外定义清晰

• 定义三个顶点,三角形内可插值

光栅化--Rasterization

采样--Sampling

离散化连续函数


for(int x = 0; x < xmax; ++x)
output[x] = f(x);

定义一个二元函数--用以判断像素中心点在三角形内


inside(t,x,y) = 1 Point (x,y) in triangle t
0 otherwise
采样函数

for(int x = 0; x < xmax; ++x)
for(int y = 0; y < ymax; ++y>)
image[x][y] = inside(tri,x + 0.5, y+ 0.5);
原理:像素在三角形内

P2P0 * P2Q,P0P1 * P0Q, P1P2 * P1Q符号相同则在内部,否则为外部

Bounding Box

使用一个Bounding Box,对其内部点进行采样,可减少不必要的计算

锯齿

经过上述光栅化,得到图片会发生走样,又称锯齿



反走样则为解决此问题,

06光栅化

反走样


像素值采用均值

Regular Sampling

像素值为纯红色或纯白色

解释

采样前滤除高频滤波,缩小原信号的间隔

计算像素值的均值

均值即为一个像素点被三角形覆盖的面积
the average value inside a pixel area of f(x,y) = inside(triangle,x,y)
is equal to the area of the
pixel covered by the triangle.

反走样的实现,可以参考MSAA。

MSAA

多重采样MSAA(Multi Sampling Anti-Aliasing),对任何一个像素点进行平均,可以理解为,像素分解为更小的像素,计算它们中心点在三角形内,得到覆盖率,则可得到像素对应的颜色

一次采样

对像素进行N * N次采样

计算多重采样的均值

采样结果

FXAA

快速近似抗锯齿FXAA(Fast Approximate Anti-Aliasing),与MSAA不同,不增加采样次数,进行采样后,从图像进行,找到三角形的边界,将有锯齿的边界替换,处理很快。
TAA

时间抗锯齿TAA(Temporal Anti-Aliasing),将静态图片在时间上进行采样
缩小 关闭

PERFECT WORLD ARENA

,可以理解为,MSAA像素分解的N个最小像素,在N帧中分别进行采样,每次采样考虑上一帧的结果,又为MSAA对应的样本分布在时间上,

DLSS

深度学习超级采样DLSS(Deep Learning Super Sampling),依赖于深度学习,使用低分辨率图像(比如1080p)生成高分辨率图像(8K),再把8K图像缩回4K,得到抗锯齿图像,以代替传统的时间抗锯齿等技术。

2.17

07着色

着色的定义:物体应用材质的过程

Inputs

观测方向\(\hat{v}\)

法线\(\hat{n}\)

光照方向\(\hat{l}\)

表面参数(color,shininess)

着色,不会渲染阴影

泛光反射

泛光反射即环境光,

做出假设:任何一个点接受环境光相同,可以得到理想经验模型

Ka--表面对环境光的反射率
Ia--入射环境光的亮度

这个式子与\(\hat{l}\),\(\hat{n}\),\(\hat{v}\)无关,可以这个正式理想模型La是常数即一个颜色

泛光反射效果图

Diffuse Reflection--漫反射



漫反射是光从一定角度入射之后,从入射点向四面八方反射,且每个不同方向反射的光的强度相等

Lambert’s cosine law --郎伯余弦定律

\(\hat{l}\)和\(\hat{n}\)夹角决定光照强度,光强应乘上\(\cos\theta = l*n\)

Light Falloff --能量衰退定理

点光源,半径越大,能量越小,光强应除上r2

(r为光源到入射点距离)

根据两个理论,可以获得Lambert漫反射模型

kd-漫反射系数,修改kd可得到物体表面不同颜色

-一个vector,表示一个RGB三通道,定义一个颜色

I-入射光强

r-光源到入射点距离

n-法向量方向

l-入射方向

max()-剔除夹角大于90的光

式子中没有出现\(\hat{v}\),也证实了漫反射与观察方向无关。

漫反射效果图



dx12学习之旅-的更多相关文章

  1. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  2. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  3. WCF学习之旅—第三个示例之二(二十八)

    上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1)  使用NuGet下载最新版的Entity Fram ...

  4. WCF学习之旅—第三个示例之三(二十九)

    上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...

  5. WCF学习之旅—WCF服务部署到IIS7.5(九)

    上接   WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...

  6. WCF学习之旅—WCF服务部署到应用程序(十)

    上接  WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...

  7. WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)

    上接    WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) 七 WCF服务的Windows 服务程序寄宿 这种方式的服务寄宿,和IIS一样有一个一样 ...

  8. WCF学习之旅—WCF服务的WAS寄宿(十二)

    上接    WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一) 八.WAS宿主 IIS ...

  9. WCF学习之旅—WCF服务的批量寄宿(十三)

    上接    WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一) WCF学习之旅—WCF ...

  10. WCF学习之旅—第三个示例之五(三十一)

       上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九) WCF学习 ...

随机推荐

  1. 中电金信:AI数据服务

    ​ ​ 01 方案简介 AI数据服务解决方案为泛娱乐.电子商务.交通出行等行业提供数据处理.数据分析.AI模型训练等服务,通过自主研发的IDSC自动化数据服务平台与客户业务流程无缝衔接,实现超低延时的 ...

  2. jenkins异常 -- active (exited),无法启动

    一.问题描述 1.无法启动 systemctl start jenkins 没有反应,没有输出报错 2.查询状态 systemctl status jenkins 3.jenkins拒绝访问 二.解决 ...

  3. Spring事务管理深度解析-从实践到原理

    事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制 分类 主要分为编程式事务和声明式事务两种. 编程式事务 是指在代码中手动的管理事务的提交.回滚等操作,代码侵入性比较强,如下 ...

  4. [转]基于图像的三维模型重建4——增量SFM

    内容 几种BA的形式 同时优化相机和三维点 优化相机 只优化三维点 单目相机 增量运动恢复结构(Incremental SFM) 运动恢复结构的几个问题 几种BA的形式 数学模型 n个三维点和m个相机 ...

  5. 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.6版已发布

    关于RainbowChat RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统.RainbowChat源于真实运营的产品,解决了大量的屏幕适配.细节优化. ...

  6. IM全文检索技术专题(四):微信iOS端的最新全文检索技术优化实践

    本文由微信开发团队工程师" qiuwenchen"分享,原题"iOS微信全文搜索技术优化",有修订. 1.引言 全文搜索是使用倒排索引进行搜索的一种搜索方式.倒 ...

  7. C Primer Plus 第6版 第三章 编程练习参考答案

    编译环境VS Code+WSL GCC 源码在文末下载 /*第1题*************************/ #include<stdio.h> int main() { int ...

  8. Android稳定性(一):内存使用指南

    本文同步发布于公众号:移动开发那些事:Android稳定性(一):内存使用指南 1 背景 团队内目前使用Flutter来开发移动端的应用,不可避免会涉及到一些原生代码的编写,而团队内有好些iOS出身的 ...

  9. 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入门开始

    前言 为什么我会想着制作一个智能桌面机器人呢?自问自答一下,看过我之前文章的小伙伴应该都知道我之前有为稚晖君开源的ElectronBot桌面机器人开发过一个桌面上位机软件叫电子脑壳,由于Electro ...

  10. 15个Linux Grep命令使用实例(实用、常用)

    Grep命令主要用于从文件中查找指定的字符串.首先建一个demo_file: 复制代码 代码如下: $ cat demo_fileTHIS LINE IS THE 1ST UPPER CASE LIN ...