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

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

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

使用 promtail+loki+grafana/Nightingale夜莺搭建日志上报和统计分析系统,当然,这些组件也适用于其他日志上报。 前文 内容来自一次失败的尝试,本文记录了其中有用的部分。 某游戏服务端没有信息查询接口,只能从打印的日志看玩家加入、退出及状态信息。为了做一个状态通知机器人,遂各处寻找……

从某些游戏中逆向提取模型,提取到的是合并了多个物体的大 Mesh。大 Mesh 绑了一堆材质球和贴图,若想拆分大 Mesh 中的单个物体,并保持材质和贴图简洁,需要做一些特殊处理。 问题 如上所述,获取的模型是一个 Dump 出来的大 Mesh,为了利用其中某个物体,需要把该物体拆出来。本文用下图场景中的飞船……

在玩《战地 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……

前言 又到了年度报告刷屏的时候,在 2023 年的最后一天,本博客也按照惯例公布梓喵出没博客 2023-2024 年度数据报告。 梓喵出没博客年度数据报告 存活 没错,本博客的运行时间又增加了一年。 自 2015 年上线至今,本博客已度过了近 9 年的时间。 如果算上之前的火萤小站,那总时间已经近 10 年了……

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

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

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