在 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 中一些重点概念。另注:本文涉及特定平台/制造商的内容均可从公开渠道获取,与相关平台/制造商的内部信息无关。 前言 本文是很久之前写的笔记,最近有时间,遂整理而公开于此。 由于文字篇幅过大,图片较少,建议使用护眼模式进行阅读。 读完本文,可以对如下……

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

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

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

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

从日本亚马逊预购的 Quest3 到手近一个月了,作为一个(自称的)资深 VR 玩家,高强度用了两三周,简单评价下这款机器。 Good 1. 光学模组和屏幕色彩 同样是 Pancake 透镜,相比于竞品,Meta 应该对光路做了深度优化,Quest 3 一体机中光学炫光和鬼影很轻微。 对 Pancake 来说……

想在 Unity 中显示 Android 界面,但又不想导出 Unity 工程在 Android Studio 里编辑,于是探索将 Activity 导出到 AAR 包,用 Unity 编译打包的方法。 说明 本文介绍了通过 Unity Editor 打包含 Android Activity 在内的多 Act……

接前文,为了实现一个较为完整的播放器,需要支持从文件管理器中打开文件,而这一过程是通过接收隐式 intent 实现的。我们需要让 Unity 接收该隐式 intent。 声明 intent-filter 文件管理器打开一个应用时,会发送一个隐式 intent,系统会在应用的 AndroidManifest 中……