记录一下,第一篇博客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. The Financial-Grade Digital Infrastructure

    ​ ​ 01 Product Introduction   The Financial-Grade Digital Infrastructure is a digitally-enabled foun ...

  2. 实现一个分布式调用(OkHttp+SpringBoot)

    很多情况,trace是分布在不同的应用中的,最常用的远程调用方式就是Http. 在这种情况下,我们通常通过增加额外的Http Header传递Trace信息,然后将其组织起来. 本部分通过构建一个目前 ...

  3. Qt编写安防视频监控系统36-onvif连续移动

    一.前言 时隔一年多,重新对视频监控系统的onvif内核重写,一方面为了兼容Qt6,一方面按功能分类提高效率.整体逻辑思路是一样的,主要的改动是由于Qt6不再支持QtXmlPatterns模块(其实这 ...

  4. Qt编写项目作品26-一维码二维码解析及生成

    一.功能特点 支持本地USB摄像头实时解析. 支持网络视频流实时解析. 解码格式支持一维码二维码等各种编码. 可生成一维码二维码,一维码支持EAN_13格式,其他格式可定制. 条形码参数支持宽度.高度 ...

  5. [转]BeanUtils.copyProperties使用总结以及注意事项

    1.前言开发过程中,讲一个对象的属性和值赋值到另一个对象上,大量使用了get.set方法,看着很臃肿,思考下肯定不只有我有这种想法,所以技术上肯定有方法能解决这个问题,所以查阅了一些资料发现了Bean ...

  6. 墨卡托及Web墨卡托投影解析

    Google Maps.Virtual Earth等网络地理所使用的地图投影,常被称作Web Mercator(Web墨卡托投影)或Spherical Mercator(球面墨卡托投影),它与常规墨卡 ...

  7. spark (二) spark wordCount示例

    目录 实现思路 实现1: scala 基本集合操作方式获取结果 实现2: scala map reduce方式获取结果 实现3: spark 提供的map reduce方式获取结果 FAQ: 实现思路 ...

  8. DEAT NOTE

    动漫 评分/10 评价 进击的巨人 10 献出心脏! Re:从零开始的异世界生活 10 蕾姆蕾姆!!! 反叛的鲁鲁修 10 算无遗策鲁鲁修 末日时在做什么?... 9 谁还不是个珂学家 东京食尸鬼 9 ...

  9. 前端开发常用git命令详细版

    1.新建代码库 当前目录创建一个git代码库 git init 新建一个目录文件 将其初始化为git代码库 git init [pro-name] 远端拉去项目 git clone [url] 2.基 ...

  10. Java API 之 Object

    Object 顶级父类.任何一个类都将 Object 作为父类,也就意味着任何一个对象都可以赋值给 Object 对象.Object 类也是 Java 中唯一的一个没有父类的类. (方法默认是 pub ...