Sand and Foam

紊乱的、不易分辨的、不真确的

关于贴图采样的种种

近期项目在跨平台开发时遇到了一些关于Texture Sample的bug,解决之余趁此机会进一步学习了关于这方面的知识,干脆记为本文。 关于texture.Load 那么也就从笔者遇到的bug入手作为引子吧。 简单介绍一下,DX中有texture.Load(int3(unCoord2, 0)),该api可输入具体的Texel Coord以读取该位置的纹素值,与常用的Sample在使用上区别为......

Houdini Ocean To Unity

前言 许久没能给blog清灰,不知不觉已经到了2023年,虽说依然可以用“做的东西大多是项目的,无法公开”来给自己开脱,但多少还是有些惭愧的。 近期我感觉到如果只是学习Shader相关的内容,作为TA的话技能树就显得有些窄了,因此又重新拾起大学时期曾经学过一点的Houdini,开始做一些更加实用的效果与功能。而这一次我的学习目标是“学习Houdini中烘焙贴图的方法”,之前曾看到过将Houd......

关于“Z Offset”

卡通渲染中有不少trick,个人认为其中最涉及对管线整体了解的一个trick,便是“让眉毛显示在头发前”,看似简单的一个小trick,其实潜藏着许多坑。 方法一 模板测试 通常这种反直觉的Trick,第一反应便是模板测试,给头发一个模板值A,然后眉毛画两次,一次是正常绘制,一次是开启ZTest Always后,只使用模板测试,当模板值为A时才通过。 这样确实能够实现让眉毛显示在头发上的目标......

Xenoblade3 渲染研究

本文初发布于zhihu https://zhuanlan.zhihu.com/p/553209338 0. 前言 自两年前通关XBDE与XB2以来,笔者就对这个游戏系列非常着迷,不久前发售的XB3更是系列集大成之作,而它相比前两作也有长足进步,不禁让人感叹“这竟然是NS游戏?”;而笔者作为一名游戏开发者,当然也想更加深入了解其使用的技术方案,在研究之时觉得其内容还挺值得分享,因此便有了这......

二次元脸部光照阈值图生成

前言 久违地发一下技术文章,社畜之后一些工作内容无法公开分享,不过一些业内已公开的方案还是可以聊聊的。 所谓“二次元脸部光照阈值图”便是类似如下的图,在业内常被称为“SDF图”: 然而其实它在应用时与SDF毫无关联,仅是生成时用到了SDF罢了,因此笔者更想称其为“阈值图”。 总而言之,这篇文章将描述如何生成这么一张图,在Unity中编写工具时遇到了什么坑。 描述各个光照角度 为了制作阈值图......

【Unity URP】Unity Procedural Skybox Shader

前言 Github:https://github.com/FlowingCrescent/SimpleProceduralSkybox_URP 虽然我已经写过不少Shader,但程序化Skybox相关的Shader至今还未接触,因此这次先从Unity自带的Procedural Skybox入手研究,打算之后写个自己的风格化Skybox。 Unity的自带程序化天空盒 Unity Pr......

【Unity】关于Unity的Particle System

最近做了个有关Particle System的需求,发现Unity这Particle System实在奇葩,遂写篇简单的笔记记录一下。 根本不存在的“模型空间” 由于需求比较特殊,shader中设计一些模型空间的转换,但是我发现本来在普通物体上生效的shader,放在Particle System的Material中就失效了,查找了许久原因,才发现这Partcicle System根本不存在......

【Unity URP】卡通渲染中的刘海投影·改

前言 距离上一篇关于刘海投影的文章也过了一年有余https://zhuanlan.zhihu.com/p/232450616,笔者也在这期间积累了一些工作经验,于是在实习结束后的某一天灵感迸现,发现刘海投影应有更加简单且高效的做法。 ​ 效果实现原理 以模板测试为核心,原理变得更为简单了: 在绘制面部时写入特定的模板值X,然后在不透明物体绘制完之后再绘制一次头发,此时根据屏幕空间的光照方向对......

NoiseBall系列学习笔记

工作相关的内容不太能发,就发点跟项目完全无关的东西……这次选中的是Kejiro大神的NoiseBall系列,2是使用Compute Shader和DrawMeshInstanceIndirect的例子,3是使用DrawProcedural的例子,而5结合了Job System,可以作为这一些API的入门教程学习。 NoiseBall2 Github 原理比较清晰明了:使用Compute S......

关于透视插值 Vertex -> Frag

问题起因 最近我有一位朋友研究Colin的Screen Space Decal时,对其中的一个部分表示非常不解: 1234567//in vertex shader :o.viewRayOS.w = viewRay.z;o.viewRayOS.xyz = mul((float3x3)ViewToObjectMatrix, viewRay);..... //in fragment sha......