此项目是受LearnOpenGL启发,开发的一个基于DirectX 12的、以学习为目的的渲染器。完成的基础工作有DirectX 12图形API封装、简易应用框架、基础数学库、obj模型加载等;渲染相关算法实现了Tone Mapping、Shadow Mapping、单次大气散射、IBL、PBR、延迟渲染、Bloom、SSR等;另外有部分算法由朋友合作完成,比如TAA、皮肤渲染等。
创建一个空的工程
渲染一个三角形,参数传递使用Descriptor Table。Root Signature初始化时调用的InitAsDescriptorRange
渲染一个Cube,参数传递使用Root Constants。Root Signature初始化时调用的InitAsConstants。另外还有一种是使用Root Descriptor,Root Signature初始化调用InitAsBufferCBV,没有单独示例工程
渲染一个带贴图的四边形,顺便测试Alpha Blending
测试multiple vertex stream,每个顶点属性一个单独的stream,渲染效果同Tutorial04
测试OBJ mesh loader
实现了Shadow Mapping以及PCF、VSM等变种
实现了单次大气散射,计划后续完成预计算的多重散射。同时测试了Compute Shader异步调用、同步机制。
预计算了Irradiance Map、Prefiltered Environment Map、Preintegrated BRDF三种贴图,给后续使用。
Prefiltered Env Map(仅展示其中一个Mip)
最终包含IBL、PBR、TAA、Bloom、SSR等渲染效果。
实现了SSSS以及基于预计算的皮肤渲染。