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

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

简单记录一下最近碰到的两个简单 Shader 的实现。 单篇篇幅太短,遂两篇合并成一篇文章。 手柄穿墙破洞 该效果常见于 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扰动及贴图混合 空间扭曲(或……

最近对 SteamVR 媒体播放器比较感兴趣,简单记录下其技术细节和实现方式(顺带看看它和之前本人从业做过的播放器有何不同)。 前文:SteamVR媒体播放器分析(一):UI 渲染与用户交互 简述 文件浏览器用到的东西不多,文件访问基于 C# System.IO,拖拽外部媒体播放基于 win32 Native……

最近对 SteamVR 媒体播放器比较感兴趣,简单记录下其技术细节和实现方式(顺带看看它和之前本人从业做过的播放器有何不同)。 这是第一篇笔记,主要描述了 SteamVR 媒体播放器的 UI 渲染和交互事件响应的实现。 本篇只讨论 UI 的渲染,至于视频 3D 渲染及视频 2D 窗口镜像、文件列表等,后续文章……