自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gamebaby Rock Sun的博客

曾经拥有的,不要忘记, 已经得到的,更要珍惜, 属于自己的,不要放弃, 已经失去的,留着回忆, 想要得到的,必须努力, 但最重要的,是好好爱惜自己!

  • 博客(145)
  • 资源 (2)
  • 收藏
  • 关注

原创 DirectX12(D3D12)基础教程(二十三) ——DirectShaderCompiler 头文件接口 ID3DInclude 的应用

本章教程较短小,但内容十分重要,是后续更灵活使用 Shader 编程的重要基础之一。也就是对 Shader 代码进行头文件分离复用设计进行全面支持。或者直白的说,本章内容重点就是让各位掌握以编程的方式在代码中支持 Shader 头文件的方法,方便在设计 Shader 编辑器之类工具时,可以让所有的 Shader 组织的更有层次。本章实例代码依然基于示例是从Direct3D 10及更高版本中引入的回调接口,它用于处理着色器编译过程中的文件包含操作,即 “#include” 宏命令。

2024-04-24 09:37:14 998 9

原创 DirectX12(D3D12)基础教程(二十二) ——HDR IBL 等距柱面环境光源加载和解算及 GS 一次性渲染到 CubeMap

在上一讲DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理中,着重介绍了整个基于 IBL 光源的 PBR 渲染过程中的数学原理,核心还是围绕反射方程(渲染方程)的简化高效计算过程展开的。当然其中数学过程稍微有些复杂。这一讲主要介绍 IBL 中等距柱面贴图解算的全过程。

2023-07-19 18:59:43 2511 9

原创 DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(5/5)镜面反射积分项2及光照合成

至此总算在历时将近一个月之后,我将这篇教程全部编写整理完毕了,期间翻阅了很多资料,查证了很多公式,通过推演梳理整个IBL渲染过程中的数学原理,终于将整个 IBL过程搞清楚也能讲清楚了。其实 PBR 中的有些理论最早都可以追溯到上个世纪的60年代,整个过程中有很多知名的不知名的大咖们奉献了很多方法和理论,而实时 PBR 更是迟到 2012 年因迪士尼的几篇论文而兴起,再经过 Epic 中众多大佬的打磨提炼,直至今天,实时 PBR 的应用才是方兴未艾之时。

2023-03-20 20:07:22 1552 11

原创 DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(4/5)镜面反射积分项1

  接着我们观察整个积分方程拆分后的第二项,也就是被称之为镜面反射项的部分:Los(p⃗,ωo⃗)=∫Ω(DFG4(ωo⃗⋅n⃗)(ωi⃗⋅n⃗))Li(p⃗,ωi⃗)n⃗⋅ωi⃗dωi⃗D=NDFGGXTR(n⃗,h⃗,α)=α2π((n⃗⋅h⃗)2(α2−1)+1)2F=FSchlick(h⃗,ωo⃗,F0)=F0+(1−F0)(1−(h⃗⋅ωo⃗))5GSchlickGGX(n⃗,ωo⃗,κ)=n⃗⋅ωo⃗(n⃗⋅ωo⃗)(1−κ)+κκdirect=(α+1)28κIBL=α22G(n⃗,ωo⃗,

2023-03-20 20:03:39 985 5

原创 DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(3/5)漫反射积分项

额外需要提醒的是在著名的 [漫反射辐照 - LearnOpenGL CN](https://learnopengl-cn.github.io/07 PBR/03 IBL/01 Diffuse irradiance/) 教程中,既没有详细讲述整个数学过程,也没有推导重要性采样的过程,最后其漫反射辐照度贴图使用了计算量更大的双重循环来计算,如果不加思索的直接使用其代码,可能会造成显卡过热保护而退出,严重的情形下可能会造成显卡硬伤,所以在没有搞清楚的情况下请不要随意执行。更高级的可以使用球谐函数的方式简化存储。

2023-03-20 19:51:08 1134 5

原创 DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(2/5)

如果你有一点关于积分运算的知识的话,那么明显的就可以发现渲染方程可以进一步拆分为两个部分,这样反射积分就变成了两个部分积分的和。这样显然是有好处的,因为这种形式两个积分项可以分开计算,最后再来求和,所以可以被方便的用来并行计算。

2023-03-20 19:34:44 888 4

原创 DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(1/5)

2023年来了,令人闹心伤身的疫情也暂告一段落了。感慨之余,其实我也挺惆怅,这个系列教程还能继续下去吗?或者我自己还能坚持多久,我不知道。因为我也天天徘徊在失业的边缘,年纪大了被人嫌弃,学历低被人嫌弃,身体稍差也被人嫌弃,忽然发现我已不是当初那个少年了,却还始终怀揣着少年时的梦想,依旧挣扎在理想与现实之间,或者只是挣扎在温饱线上,已然是一身债,半条命了。当然幸运的是到现在我都还没有阳过,属于少数那部分,我身边的朋友们也很惊奇。然而我的家人也都阳过了,他们也很惊奇我居然一直没有阳过,算是一点小小的慰藉吧。

2023-03-20 19:16:01 1608 8

原创 3D数学系列之——再谈蒙特卡洛积分和重要性采样

保证一定的精度,其实就是之前标题所说的从 “蒙的挺准” 到 “蒙的更准”,而且计算量还大大变小了,这对于很多需要数值积分的计算来说是非常非常好的优化方法。成正比导致我们必须付出平方倍的计算量,才能使的误差变小的规律可以被打破了,因为这个因子的后面那堆复杂的表达式在我们特意的设计下几乎 = 0,所以我们完全不用浪费过多的计算量来获取较精确的积分结果。乍看上去,貌似我们要知道我们需要使用的随机变量的概率密度,就需要先知道最终积分的结果,使得这个式子变成了无用的“鸡肋”。也就越接近原始的积分值!

2023-03-10 18:45:50 2403 6

原创 与伊人相约元宇宙——一次长谈为她讲清楚什么是元宇宙

  声明:本文目的仅用以故事方式叙述本人对元宇宙的观点与看法,其中全部故事纯属虚构,如有雷同纯属巧合。图片来自于网络,侵删!  那年,好友阿强盛情邀请我去参加他们公司的年会。阿强是他们公司的CTO,公司主要做娱乐类软件产品研发和销售,生意还算不错,也做到了几百人的规模,在圈内也小有名气。因为我经常给阿强提供一些技术参考的意见,算是个顾问吧,所以阿强为了感谢我,就干脆邀请我去参加他们公司的年会。参加年会的人很多,他们公司的主要负责人以及一些友人也都悉数被邀请参加。  不知是阿强有意还是无意,他将我与他们公司

2022-11-14 00:48:06 3534 1

原创 开放本人早年的Windows核心编程的代码库——供引擎设计参考

除了GUI GDI之外,这里囊括了几乎所有的 Windows 功能的基础示例,这样做,首先是为了方便各位了解关于Windows 的所有基本 API;其次是为了方便各位在设计游戏引擎时对除了 DirectX 之外的功能有一个比较完整的功能参考列表,比如:多线程、多进程、内存管理、线程同步、文件系统、网络、XML等等,虽然这些功能都是 Windows 版的,但是现在几乎所有的操作系统都有这些对应的功能,并且在细节上也都很类似,因此在进行抽象设计时这也是一套不错的参考手册。

2022-11-08 19:23:32 848 2

原创 DirectX12(D3D12)基础教程(二十)—— 纹理数组(Texture Array)非DDS初始化操作

在本系列教程的DirectX12(D3D12)基础教程(五)——理解和使用捆绑包,加载并使用DDS Cube Map中,第一次介绍并引入了基于 DDS 格式的CubeMap的操作和使用方法。在后续示例代码的编写过程中,逐渐发现 DDS CubeMap 的种种局限,主要是 DDS 的 CubeMap 其实很难找,并且使用它来加载 SkyBox ,会因为其相关代码的过渡封装而导致对 Texture 或 Texture Array 本身的各种操作和理解基本上是很困难的。

2022-10-24 01:45:00 1951 18

原创 DirectX12(D3D12)基础教程(十九)—— 多实例渲染

多实例渲染,本质上就是说将同一份模型(Mesh),按不同参数渲染成多份,每一份被称作一个实例,并且大多数情况下要求每个实例都要有差异。在游戏中常见这类使用场景,例如在即时战略游戏中,同一种飞机可能需要渲染几百个,它们在外观上几乎没什么差异,或者差异很少,主要是位置不同,运动状态不同,颜色不同等;在休闲游戏中,这可能是一组相同的方块,差异可能只是位置和颜色不同,或者是纹理不同等;

2022-10-09 22:52:50 2664 8

原创 DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(下)

基于D3D12的PBR渲染基础教程第三部分

2022-05-27 10:39:45 2031 12

原创 DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(中)

基于D3D12的PBR基础教程

2022-05-27 10:09:33 1659 3

原创 DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(上)

基于D3D12的PBR基础教程第一部分

2022-05-27 09:35:42 1525

原创 DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【6】)

目录12、多Slot上传顶点数据12.1、多Slot上传数据基本原理12.2、Assimp中间数据的简单转换12.2、Layout的定义12.3、缓冲区准备12.4、多Slot渲染13、动画动作状态机14、后记12、多Slot上传顶点数据  在网格数据加载及上传至GPU上,本章示例应用到了一个重要的D3D12技巧——多Slot(通道)上传(加载)数据(该技巧在OpenGL中同样重要)。12.1、多Slot上传数据基本原理  首先,多Slot上传数据,是基于一些基础条件的:  1、原始网格数据是按照

2021-07-18 12:33:50 1861 63

原创 DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【5】)

目录10、动画关键帧解算10.1、时间轴10.2、遍历动作CalcAnimation10.2、递归遍历骨骼树ReadNodeHeirarchy10.3、关键帧数据解算和插值10.4、生成关键帧骨骼变换矩阵10.5、关于性能的一些考虑11、骨骼调色板10、动画关键帧解算  在本章示例中,对导入后的模型动画数据,主要通过两个函数:CalcAnimation和递归函数ReadNodeHeirarchy,以及其它辅助工具函数来完成。10.1、时间轴  对于动画、音乐、视频等,甚至游戏引擎来说,正确的时间轴是

2021-07-18 12:27:52 1093 11

原创 DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【4】)

目录8、动画基本原理9、四元数和SQT组合变换9.1、四元数9.2、SQT变换综合9.3、存储方面的考虑8、动画基本原理  对于一般的2D动画,甚至视频来说,相信各位已经很了解其原理了,无非就是在1秒钟之内能够连续播放不少于24帧的连续画面,也被称之为帧速率(FPS),就可以在人类脑海中经过不经意的“脑补”而形成连续的动态影像。当然这只是普通的2D动画的基本原理,这里有个隐含的前提,就是你至少要在每一秒钟有近乎连续的24张图像,对于一般的摄像机拍摄视频来说,这不是问题,只是摄影师考虑拍摄角度,场景,构图

2021-07-18 12:20:01 1200 7

原创 DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【3】)

目录6、骨骼绑定6.1、Shader中的骨骼绑定6.2、aiMesh中的骨骼绑定信息6.3、骨骼绑定信息的解算7、骨骼树(骨架)6、骨骼绑定  搞清楚了基本的骨骼动画的基本原理,那么就直接来进入“骨骼绑定”的编程学习,至于过于复杂的理论,就不多介绍了,我觉得直接上源码可能更容易让大家快速掌握骨骼动画,过多的理论反而让大家会觉得无从下手。6.1、Shader中的骨骼绑定  首先从数据的角度讲,骨骼绑定在Shader中就是指在顶点的数据结构中扩展属性,用以指明顶点受其影响的骨骼的索引号,以及受影响的权重

2021-07-18 12:04:50 1479 4

原创 DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【2】)

目录3、Assimp的导入标志4、网格(Mesh)5、骨骼动画基础3、Assimp的导入标志  一般的模型文件中,大多数情况下在建模时默认都保存成了OpenGL的右手坐标系,即z轴坐标垂直屏幕向外。而在D3D中习惯是左手坐标系,即z轴垂直屏幕向里。左右手坐标系区别如下图所示:  其实这种差别,对于现代的可编程的渲染管线来说,无论是OpenGL还是D3D都是可以随意使用左右手坐标系的,无非就是使用列矩阵左乘向量还是用行矩阵右乘向量的差别。这最终就变成了开发人员的事情,即你是习惯左手还是右手?  在

2021-07-18 11:58:51 2350 5

原创 DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【1】)

1、前言  经过了一系列比较枯燥的命令行式的“外篇”系列教程后,这一篇起回归主干,继续我们的D3D12之旅,本章就利用已经学习的assimp库导入3D模型及动画,并且实现3D骨骼动画渲染。需要注意的是本章重点在骨骼动画的加载解算以及相应基本Shader的编写上,并没有加入光照、材质等功能,这样也符合本系列教程一贯的宗旨,即尽力使每个例子都简单,主题集中,防止大家分散精力。并且本章主题“3D骨骼动画”本身就稍微有些难度,所以更需要大家集中精力搞懂骨骼动画的基本原理,这也是3D动画最核心的基础之一。当然也只有

2021-07-18 11:43:12 1927 6

原创 3D数学系列之——从“蒙的挺准”到“蒙的真准”解密蒙特卡洛积分!

目录1、前言2、积分概念简单回顾3、积分在程序计算上的困难4、蒙特卡洛积分5、一些扩展应用1、前言  在学习3D数学的过程中,或者说在学习游戏开发、引擎开发、渲染器开发、Shader开发的过程中,对大家来说,当然也包括我,数学是一道必须要迈过的坎,而无论你有多么头疼。  目前市面上所见3D数学类的书籍,其内容还是主要集中在3D的线性代数部分,即向量和矩阵的理论及运用上,这部分内容其实如果有初高中的牢固的数学的基础的话,理解和掌握是不难的。但是在真正的渲染编程的过程中,仅仅有线性代数的知识是远远不够的,

2021-06-21 18:30:56 1883 55

原创 DirectX12(D3D12)基础教程(外篇四)——用Assimp载入模型基础操作(无渲染纯命令行版)

目录1、前言2、Assimp使用简介3、Assimp头文件和库文件引入4、Import模型文件5、aiScene基本数据结构及遍历5.1、Assimp类图及关系5.2、aiScene遍历5.3、网格数据(aiMesh)5.4、材质数据(aiMaterial)5.5、骨骼结构(aiNode)5.6、动画数据(aiAnimation)5.7、assimp中骨骼动画数据的总结5.8、assimp中的纹理6、命令行操作方法说明7、关于引用ATL的说明1、前言  在《外篇一》教程中,已经交代了为什么使用Assim

2021-06-17 19:37:04 3173 38

原创 DirectX12(D3D12)基础教程(外篇三)——CreateGraphicsPipelineState 错误 #682的修复,深刻理解POSITION和SV_POSITION

目录一、问题二、解决三、简析一、问题  当继续编写D3D12后续教程示例的过程中,在调用ID3D12Device::CreateGraphicsPipelineState时遇到如下的错误,调用失败,无法创建管线状态对象:D3D12 ERROR: ID3D12Device::CreateGraphicsPipelineState: Rasterization Unit is enabled (PixelShader is not NULL or Depth/Stencil test is enabled

2021-05-08 21:22:02 2059 20

原创 DirectX12(D3D12)基础教程(外篇二)——编译DirectXShaderCompiler库

目录1、前言2、准备工作3、下载DirectXShaderCompiler源码4、编译DirectXShaderCompiler1、前言  功夫不负有心人,终于DirectXShaderCompiler库,也就是HLSL的编译器开源项目源码也被我编译通过了,这是个不小的成功!于是我就乘热打铁,把整个编译的过程记录下来,并完整的分享给大家。目前HLSL Shader 已经发展到最新的V6.6版本了,按微软的叫法就是sm6.6,又增加了很多新的光追Shader特性,所以有喜欢研究编译器以及Shader编译原

2021-04-22 02:41:26 2863 15

原创 DirectX12(D3D12)基础教程(外篇一)——编译Assimp

DirectX12(D3D12)基础教程(外篇一)——编译Assimp1、前言2、Assimp库简介3、编译Assimp库的准备工作4、下载Assimp源码并编译1、前言  D3D12系列教程因为我转移精力学习Nodejs、VueJs等技能,暂时中断了一段时间,着实感觉有点对不起大家,这期间也有很多网友都在询问RTX系列教程还出不出,在这里一并向大家回复,这个系列将一直不间断,但不定期的更新下去,哪怕MS出到D3D13、D3D14…,只是时间问题请大家能够理解并谅解,毕竟人的精力是有限的,正如金大侠所言

2021-04-19 00:25:46 1969 8

原创 DirectX12(D3D12)基础教程(十六)——实现渲染线程池:3个内核同步对象实现渲染线程池/大规模线程池

  使用1个信标量对象 + 1个CPU屏障 + 1个事件对象共3个内核同步对象实现渲染线程池/大规模线程池管理。

2020-11-07 20:24:29 1942 3

原创 DirectX 12 Ultimate(Feature Level 12_2)新特性一览

2020-11-03 14:12:43 1726

原创 DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(下)

文章目录5、用DirectComputer完成GIF帧预处理5.1、Computer Shader中以数组方式访问纹理完成帧预处理5.2、Dispatch启动GIF帧绘制5、用DirectComputer完成GIF帧预处理  当看到这一小节的标题时,可能会有点蒙,为什么不把解析出来的帧直接当成纹理用?还需要“处理”什么?其实仔细想想这不是那么简单的。前面已经啰嗦了很多关于GIF以及帧的属性读取...

2020-03-23 00:04:56 1671 16

原创 DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(中)

文章目录4、Direct Computer基础知识4.1、Direct Computer简介4.2、Direct Computer编程基本框架4.3、Computer Shader简介4.4、Computer Shader示例4.5、[numthreads(x, y, z)]语义文法详解4.6、通过Dispatch来批量发起GPU线程盒4.7、SV_GroupID、SV_DispatchThrea...

2020-03-23 00:00:14 1404

原创 DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(上)

文章目录1、前言2、GIF文件简介3、使用WIC加载并解析GIF文件3.1、解析GIF全局背景色3.2、获取GIF的像素尺寸3.3、获取像素纵横比修正图片像素尺寸3.4、读取GIF帧和属性3.5、创建GIF纹理(画板)和帧纹理1、前言  在本系列教程开头的几章中,开初使用的纹理加载组件是WIC。后来在不断的编码过程中,通过慢慢的摸索学习我才发现之前可能一直有点误解WIC这个组件了。其实这个组件...

2020-03-22 23:02:25 2465 10

原创 DirectX12(D3D12)基础教程(十三)——D2D、DWrite On D3D12与文字输出

1、 前言  在经过了前面一系列章节的“狂轰滥炸”式的学习之后,如果你现在跟进到了这里,那么请为自己点个赞先!  从本章开始,教程内容都会开始使用Markdown方式进行发布。一方面主要是为了练习Markdown编辑器的使用;另一方面Markdown目前已经成为比较流程的程序文档的编辑方式,我也来跟跟潮流,也是让大家习惯Markdown。还有就是Markdown的公式编辑比较简洁,后续的文章中...

2020-03-12 01:37:43 5859 20

原创 DirectX12(D3D12)基础教程(十二)——多线程+多显卡渲染及水彩画效果和标准简化版高斯模糊

1、前言上一章中最后一个水彩画效果是有问题的,这一讲我们特意修正这个错误。其实错误主要是因为真正的水彩画效果还需要一个后处理——高斯模糊。这一章主要的任务就是修正这个错误。同时这一章中将结合使用酷炫的多线程+多显卡渲染框架。为了能更好的理解本章教程示例,请各位最好已经仔细阅读了之前关于多线程渲染、多显卡渲染,以及Shader原始特效的章节文章及示例代码。在本章中,多线程渲染依旧是用来录...

2020-03-08 15:50:17 3612 5

原创 DirectX12(D3D12)基础教程(十一)——几个“上古时代”的基于Pixel Shader的滤镜效果

1、前言记得大约是在10多年前,还在我努力的在学习着DirectX编程和3D引擎编程的方方面面知识的时候,初次接触到了当时很先进的Shader程序。当时搜集了很多资料,其中有一份就是讲解如何在PixelShader中实现类似PhotoShop中的一些滤镜功能。这次我就将这些陈年的有意思的Shader翻出来,用D3D12再次回炉一下,也做成教程,供大家学习Shader使用。本章的源代码已...

2019-11-11 23:24:00 1981 7

原创 DirectX12(D3D12)基础教程(十)——DXR(DirectX Raytracing)基础教程(下)

本文接上篇:DirectX12(D3D12)基础教程(十)——DXR(DirectX Raytracing)基础教程(上)目录5、C/C++代码中的其它准备工作6、DXR编程的基本框架7、枚举高性能适配器(显卡)和创建DXR设备7.1、枚举高性能适配器(显卡)7.2、判断系统DXR能力支持程度7.3、创建DXR设备和命令列表7.3.1、使用DXR Fallback兼...

2019-10-11 01:28:45 5405 20

原创 DirectX12(D3D12)基础教程(十)——DXR(DirectX Raytracing)基础教程(上)

目录1、前言2、准备工作3、Raytracing Shader3.1、Raytracing Shader整体框架介绍3.2、全局变量3.2.1、渲染目标Unordered Access 2D纹理变量3.2.2、三角形网格变量3.2.3、常量缓冲3.2.4、加速结构体变量3.3、基本光线追踪渲染过程框架3.4、光线发射函数(Ray Generatio...

2019-09-30 11:49:12 10579 23

原创 DirectX12(D3D12)基础教程(九)——多线程渲染BUG修正及MsgWaitForMultipleObjects函数详解

1、前言距离该系列文章上一篇文章已经有近半年多时间了,大家一定很好奇,为什么不继续下去了呢?说好的光追渲染去哪了呢?OK,请大家稍安勿躁,首先,光追渲染的示例正在紧张的编写当中,教程也在有条不紊的准备中,只是因为光追渲染目前在我的电脑上只能以Fallback形式运行,而征服Fallback库有点麻烦,需要些时间;其次,在这近半年多的时间里,除了忙于工作,我主要是在按计划学习Docker、G...

2019-09-11 23:35:23 1418 8

原创 DirectX12(D3D12)基础教程(八)——多显卡渲染基础、共享纹理、多GPU同步

目录1、前言2、为什么要多显卡渲染3、多显卡渲染核心原理3.1、多GPU拓扑模型及工作方式3.1.1、隐式多显卡系统3.1.2、显式多显卡系统3.1.3、链接的多显卡系统3.1.4、无链接的多显卡系统3.2、无链接显式多显卡系统的核心关键点——共享资源4、异构多显卡渲染框架示例——核显+独显方式4.1、创建多个设备对象4.2、创建交换链及渲染目标...

2019-02-01 20:39:50 10291 7

原创 DirectX12(D3D12)基础教程(七)——渲染到纹理、正交投影、UI渲染基础

目录 1、前言2、渲染到纹理3、调试支持4、正交投影5、UI渲染基础6、本章完整代码链接1、前言记得那是在差不多10多年前,我在工作中认识了一位好兄弟小杨。那时他刚毕业,跟我是同一所大学,算我的校友。彼时,我已工作快10年了,在当时那家不大的软件公司管VC++研发部。小杨加入了我的团队。他长了个圆脸,跟我一样戴副眼镜,话语不多,而且眼睛中并没有闪烁着我希望看到的...

2019-01-26 14:05:00 5388 22

原创 DirectX12(D3D12)基础教程(六)——多线程渲染

 目录 1、前言2、为什么要多线程渲染3、多线程3.1、什么是线程3.2、进程的主线程3.3、线程的入口函数3.4、创建线程3.5、CreateThread示例3.6、C/C++创建线程函数(VC版)3.7、_beginthreadex示例3.8、线程退出3.9、线程的暂停(挂起)和恢复3.10、线程的暂停式创建3.11、线程栈3...

2019-01-14 21:39:37 11999 31

2019_Book_RayTracingGems.pdf

《实时光线追踪渲染精粹》 渲染器使用两种方法来确定像素颜色:光栅化或光线追踪。 光栅化从一个特定像素开始,并询问“这个像素应该是什么颜色?”; 光线追踪则在视角和光源起作用,并询问:“光线在做什么?” 光线追踪的工作原理是:追踪光线在场景内的反射路径。光线每次反射的时候,它都会通过沉积早前对象的颜色来模拟现实生活中的光线,同时损失强度。对于特定类型的材料与效果而言,这种颜色的沉积使得清晰的反射,以及细微,逼真的颜色变化只能通过光线追踪来实现。 由于它模仿光线的真实行为,光线追踪同时擅长于产生区域阴影和环境遮挡。 相反,光栅化比光线追踪更快,成本更低,只是通过一些近似值计算照明。Unreal的光栅化技术在一枚高速GPU上以毫秒为单位提供4K分辨率帧。栅格化可以非常逼近照片级别真实感,同时不一定是物理上精确。另外对于大多数Unreal引擎的用户来说,速度的提升显得非常值得。 但对于更强调照片级真实感而非性能的真人实景电影和建筑可视化项目而言,光线追踪则显得更有优势。到目前为止,由于其巨大的计算需求,光线追踪仅在离线渲染中实施。使用光线追踪计算的场景可能需要几分钟到几个小时才能计算出一个帧,而电影动画的一秒需要24帧才能填充完成。

2019-06-13

DirectX12(D3D12)基础教程(五)——理解和使用捆绑包,加载并使用DDS Cube Map 示例代码资源

DirectX12(D3D12)基础教程(五)——理解和使用捆绑包,加载并使用DDS Cube Map 示例代码中需要的资源: DDSTextureLoader12.cpp DDSTextureLoader12.h sky_cube.dds sphere.txt 金星.jpg

2018-11-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除