dx12学习之旅-
记录一下,第一篇博客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学习之旅-的更多相关文章
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- WCF学习之旅—第三个示例之二(二十八)
上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1) 使用NuGet下载最新版的Entity Fram ...
- WCF学习之旅—第三个示例之三(二十九)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
- WCF学习之旅—WCF服务部署到IIS7.5(九)
上接 WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...
- WCF学习之旅—WCF服务部署到应用程序(十)
上接 WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...
- WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)
上接 WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) 七 WCF服务的Windows 服务程序寄宿 这种方式的服务寄宿,和IIS一样有一个一样 ...
- WCF学习之旅—WCF服务的WAS寄宿(十二)
上接 WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一) 八.WAS宿主 IIS ...
- WCF学习之旅—WCF服务的批量寄宿(十三)
上接 WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一) WCF学习之旅—WCF ...
- WCF学习之旅—第三个示例之五(三十一)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) WCF学习 ...
随机推荐
- Shell_Shell 脚本中字符串的相关操作
在我们的shell 编程中,一个必不可少的操作就是针对于字符串的操作, 重要有字符串替换,计算字符串长度 等等... 原文地址: https://blog.csdn.net/github_337369 ...
- javax.management.InstanceNotFoundException: org.springframework.boot:type=Admin,name=SpringApplicati
把这两个勾选去掉
- Qt开发经验小技巧216-220
Qt的网络库支持udp广播搜索和组播搜索,其中组播搜索可以跨网段搜索,有时候你会发现失灵,此时你可以尝试把本地的虚拟机的网卡禁用试试,估计就好了.还有就是在本地开启了代理啥的,先关掉试试.近期在使用t ...
- [转]如何将 PDF 批量导入到iPhone或iPad?| 技能Get!
电脑上没看完的 PDF,想在移动端继续阅读? 问题来了!如何随身携带大量PDF文档?如何将电脑上的 PDF 文档快速导入到你的 iPhone 和 iPad 呢?链接数据线已经 out 了,现在告诉大家 ...
- 即时通讯技术文集(第23期):IM安全相关文章(Part12) [共15篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第23 期. [- 1 -] 理论联系实际:一套典型的IM通信协议设计详解(含安全层设计) [链 ...
- 开源即时通讯IM框架MobileIMSDK的H5端开发快速入门
► 相关链接: ① MobileIMSDK-H5端的详细介绍 ② MobileIMSDK-H5端的开发手册new(* 精编PDF版) 一.技术准备 您是否已对Web端即时通讯技术有所了解? 1)新手入 ...
- 万字长文,一篇吃透WebSocket:概念、原理、易错常识、动手实践
本文由作者"阿宝哥"分享,原题"你不知道的 WebSocket",有修订和改动. 1.引言 本文将从基本概念.技术原理.常见易错常识.动手实践等多个方面入手,万 ...
- 【AIGC】Embedding与LLM:token长度限制困局下,长文本LLM应用的暂缓之计
[详细内容首发于微信公众号(Hobbes View)] 什么是Embedding? Embedding是一种多维向量数组,由一系列数字组成,可以代表任何事物,如文本.音乐.视频等.在这里我们将重点关注 ...
- 一篇解决编译原理大作业,基于Flex、Bison设计编译器(含语法分析树和符号表)
1.工具简单介绍 Flex 和 Bison 是编译器开发中常用的两个工具,分别用于生成词法分析器和语法分析器.它们通常一起使用,共同完成源代码的词法分析和语法分析工作. Flex: Flex通过读取一 ...
- Peewee:Python 简洁强大的 ORM 框架
在 Python 的开发世界中,数据库操作是至关重要的一环. 今天介绍的 Peewee 作为一款简洁且功能强大的 ORM(对象关系映射)框架,为开发者提供了高效便捷的数据库交互方式. 1. Peewe ...