最近在用 C++ DX11 写一些小玩具练手,其中不可避免地碰到了 Context 与多线程渲染内容,在此简单记录下。 D3D11 多线程渲染 D3D11 多线程渲染指的是 CPU 端使用多个线程并行生成 CommandList 并合并或提交,这是一个 CPU 端的概念。 单 GPU 执行 Command 时……

在 Youtube 上刷到了《Coding Adventure: Clouds》这一视频,正好最近想做一个 3D 地图的练手程序,遂记录一下 Ray Marching 体积云渲染的原理和实现。 SDF & Ray Marching Ray Marching 翻译成中文往往称为光线步进。 Ray Mar……

刷 Youtube 的时候偶然看到了一个卡通水的实现,原 Shader 是手撸的,而我使用 Unity ShaderGraph 来复现它。 原理 通过 Camera 深度图获取不透明队列的场景深度,其与水面片元深度的差作为水深依据 通过噪声图渲染波浪,通过 UV 扰动实现波浪动画 实现 1. 获取水的“深度”……

简单记录一下最近碰到的两个简单 Shader 的实现。 单篇篇幅太短,遂两篇合并成一篇文章。 手柄穿墙破洞 该效果常见于 XR 厂商的防护中心软件(或称安全区、游玩区域等),主要特点: 默认情况下,显示技美的动态墙面特效(水波纹、呼吸云云) 当手柄/手/头等靠近墙面时,墙面会开一个洞,并辅以红色警告提示 离墙……

对 OpenXR 原生开发 APP 的架构简述,并介绍了 XR 中一些重点概念。另注:本文涉及特定平台/制造商的内容均可从公开渠道获取,与相关平台/制造商的内部信息无关。 前言 本文是很久之前写的笔记,最近有时间,遂整理而公开于此。 由于文字篇幅过大,图片较少,建议使用护眼模式进行阅读。 读完本文,可以对如下……

在玩《战地 2042》时发现一个模拟 RGB 像素显示的大屏幕:远观内容为完整图像,贴近观察是发光的 RGB 像素点。该效果很有趣,在 Unity 中复现一个玩玩。 实现的效果 截图 动图(GIF) 本文包含的内容 本文用 Unity 实现,但部分内容参考自 Youtube/Jam2go 的 Unreal E……

前言 很多小白用户会有一个误区:看到某些 VR(or MR/XR/各种 R)厂商宣传手势追踪,总以为它和 PC 鼠标指针一样,能够无缝使用在所有存量 VR 应用中。 然而,和 2D 窗口不同,目前 VR 应用及 VR OS 间并没有(也无法有)一个全局的“鼠标指针”(Apple Vision Pro 的 Vo……

由问题“URP 下通过右键菜单创建的 Shader 不显示任何内容”发散而来,引申出对 URP DepthPrepass 的讨论。 上述问题原因 URP 默认 Pipeline 下,渲染不透明物体前,如有下述情况之一,会先执行深度写入 Pass: 有RenderFeature需要Depth Texture/N……

很久之前在某 3D 滑动列表中用过模板测试(Stencil Test),这次回顾,尝试用它搞一个双面穿越门出来。 效果 原理 把一个值写入 Stencil Buffer 中,后续同位置的其他片元渲染时,若开启了模板测试,将会把自身的预设值与 Stencil Buffer 中的值对比(即 Test),基于比较结……

最近对 SteamVR 媒体播放器比较感兴趣,简单记录下其技术细节和实现方式(顺带看看它和之前本人从业做过的播放器有何不同)。 前情提要 这是关于媒体播放器分析的最后一篇文章,前两篇文章如下: SteamVR媒体播放器分析(一):UI 渲染与用户交互 主要讲述了播放器如何做到同一套 UI 在 Desktop ……

在 Youtube 上刷到了 Unity Japan meetup 2019 的分享视频,其中 ShaderGraph 的分享非常不错,跟着学习下。 前言 前文:ShaderGraph能量护盾(一):接触面检测及边缘发光 Shader 主要包含如下内容: 接触面检测 边缘发光 UV扰动及贴图混合 空间扭曲(或……