精选分类

面试专题

计算机图形学

LoveBegin

文章列表

# DX11 - SDF 本篇阐述在 DX11 中使用 SDF 生成距离场软阴影的实现。\ 前置知识 Compute Shader XJun的DX11教学 DX11 Compute Shader SDF 原理和实现参考 知乎 SDF原理 知乎 Unity SDF阴影实现 # SDF 步骤分析 SDF 的本质原理非常简单,各个体素存载离自己最近的物体的距离。在着色时,从着色点朝向光源方向进行改进的 RayMarch,每次的步进都是 sdf 值。如果 sdf 值小于阈值就认为是被遮挡。 SDF 的优点是着色器算法简单并且速度很快。但是时间由空间换来,SDF...

# DX11-CSM 本文为 DX11 阴影专栏第二篇。讲解 CSM 的主要实现过程。前置基础为 ShadowMap 的实现。 # CSM 先来看看之前简单使用 2048x2048 的 ShadowMap 的效果。 锯齿、漏光、条纹自遮挡,这些都是采样频率太低导致的。可是我近处顶多 25x25 大小的场景,使用 2048 的分辨率还有这么严重的走样是不能接受的。究其原因是这 2048x2048 的深度图并没有被完全利用。明明我只看到了一部分的场景,但是这一部分场景在光源 NDC 中只占一部分,只利用了一部分分辨率;其次,由于我们的光源矩阵是手动设定的,那么就可能会有物体在视锥内但是在光源...

# DX11-ShadowMap 本文为 DX11 阴影专栏第一篇。主要讲述 ShadowMap 的实现。 前置知识 Render To Texture ShadowMap 的算法非常简单。实现上唯一对于初学者的难点就是怎么采样渲染出来的纹理。DX11 中我们只需要创建 Texture2D 的 RenderTargetView 并在渲染时绑定即可渲染在纹理上,而后再使用 ShaderResourceView 绑定到着色器上进行采样即可。类似与 GL 中的帧缓冲。 此处沿用了 DX11 教程中封装好的 Texture2D 类。 此外,本文会省略一些基础过程,诸如设置缓冲区。 #...

# MyMC 本项目由赵亦安、陈薛嘉、何志鑫、唐锐 4 人小组进行开发~ 主要是基于 Cpp + OpenGL 对于 MineCraft 的简单实现。 本文是对于该项目的简单介绍。 由于水平有限以及开发仍在进行中😭,项目有很多缺点和 Bug,我们也不怎么打算要维护~。欢迎大家提出建议,我们会随缘改进的!谢谢大家喵😘。 MyMC 项目Github MyMC-下载 项目Github # 游戏 Begin! 解压安装包后可以看见 MyMC,res,shaders 三个文件夹。res 存放纹理、模型等资源。shaders 存放着色器资源。MyMC 内的 MyMC.exe 即游戏启动...

# 卡通渲染学习记录 本文记述三渲二学习历程,打算分别采用 Unity 和 Unreal 进行实现。 # 卡通渲染原理 本文依据参考 知乎 # Unity 实现篇 # 描线 # 法线外扩 Unity 中实现法线外扩非常简单,保留模型的初次 Pass 正常渲染,在第二次 Pass 中进行模型沿着法线外扩,并开启 Cull Front (根据三角形朝向裁剪,这里裁剪了正面,只渲染背面) Shader 代码如下 Shader "OutLine" { Properties { _OutLineWidth...

# UE OutLine 描边 描边是卡渲比较重要的技术。UE 中主要可以通过后处理,加自定义 pass,加自定义材质来实现。本文借此机会总结 UE 描边技术和效果。 # 后处理 后处理描边的核心是采用边缘检测算法。参考文章的实现。 # Step 1 创建后期处理体积 场景中加入一个后期处理体积,名为 OutLinePostProcess。设置后期处理体积为无限大。 # Step 2 创建后期处理材质 首先,创建一个材质及其实例,命名为 OutLine。将材质实例添加到后期处理体积的 渲染功能 - 后期处理材质 的数组下。 # Step 3 创建材质函数 创建一个材质函数,命名为...