欢迎来到 MyBlogServer

技术博客

使用JobSystem优化阶梯地形生成算法

发布时间: 2022年07月24日
缘由 几年前玩过的一款游戏 ,其中的实时可交互的地形算法让我印象十分深刻, 恰巧前一段时间看到了 介绍该算法的博客 . 然后根据文章中的算法实现了一波,效果如下: ![](https://res.lazyun.cn/typecho/2022/07/24/earth_terraced.jpg?x-oss-process=style/compress) 原理 原始算法大概流程: 基于Height...

Shader效果 - 鱼鳞纹生成

发布时间: 2022年07月09日
效果 实现思路 确定A系列的圆的圆心距离,使用 _DEBUG_DISTANCE_A 显示如下图 同理,所有圆偏移坐标 float2(0.5,0.5) 得 B系列的圆心距离 基于圆心距离和给定半径确定出系列圆A和B,使用 _DEBUG_RANGE_A 显示如下 根据鱼鳞层次优先级,确定A和B系列圆的显示访问,使用 _DEBUG_SCALE_A 显示如下 给A和B系列圆上色并混合,使用...

Unity 音效可视化

发布时间: 2022年06月25日
效果展示 实现过程 核心API是 AudioSource.GetSpectrumData , 使用这个API获取到当前播放音频的频谱数据,在做一系列转换 这次的可视化是基于Shader的,由GPU驱动。性能比使用GameObeject的缩放动画要高一些。 将音效数据传入Shader中使用了Float...

Unity URP RenderFeature分享

发布时间: 2022年06月19日
概述 分享三个我在项目里面用到的RenderFeature 自定义后处理RenderFeature 雾效RenderFeature ShaderToy RenderFeature, 用来运行转换的ShaderToy Shader 详细说明: 视频版本 注意 自定义后处理,使用Opaque Texture作为Source 再画到屏幕上,如果有其他渲染批次需求,则需要修改...

URP Shader 创建模板

发布时间: 2022年06月12日
Shader "Unlit/Template" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag...

在2D游戏中实现地球仪的旋转

发布时间: 2022年06月04日
代码和说明 1. 固定地轴Shader 主要逻辑在Fragment Shader中,具体如下: real4 frag(v2f i) : SV_Target { // 将UV原点换到图片中央 float2 uv = i.uv - 0.5; // 根据勾股定理计算 z = sqrt( r*r - (x*x + y*y )) float3 pos = float3(uv.x, uv.y,...

Unity URP - ShaderToy RenderFeature

发布时间: 2022年05月29日
在Unity中使用ShaderToy网站上的shader方式: 1. 之前的文章中提到的ShaderToy Renderer : ShaderToy shader快速移植实现 最终的渲染结果是一张RenderTexture,可以直接使用; 也可以使用提供的对应的Material. 2. 这篇文章中会介绍如何在URP RenderFeature中使用ShaerToy Shader - 大概说明...

在URP中实现自定义PostProcess

发布时间: 2022年05月22日
1. OnRenderImage 不能用了,需要用RenderFeature自定义Pass,或者使用 BeginCameraRendering 2. 这里只分享使用RenderFeature的方式实现后处理,该方式在 在URP中实现高度雾和远景雾 中有使用过。 class CustomPostProcessRenderFeature 作为一个 ScriptableObject ,...

Unity 插件学习 - SPCRJointDynamics

发布时间: 2022年05月21日
最近发现一款效果特别好的布料物理骨骼模拟插件,具体效果如下: 地址在此: https://github.com/SPARK-inc/SPCRJointDynamics 既然别人写的这么优秀,当然要 抄一下 借鉴学习看看怎么实现的。 - 目录结构 从插件目录可以看出,该插件使用了JobSystem来加速模拟过程,那么想了解具体怎么模拟的,则直接先查看对应的Job Class内容 - 代码内容

在URP中实现平面透射阴影

发布时间: 2022年05月21日
关于平面投射阴影,网上已经有很多文章介绍相关原理和优缺点: https://zhuanlan.zhihu.com/p/31504088 https://zhuanlan.zhihu.com/p/266174847 这里记录一下在URP中的实现: 将URP Simple Lit Shader 源码拷贝新建一个Shader 修改成如下 // Shader targeted for low end...

ShaderToy shader快速移植实现

发布时间: 2022年05月21日
如何将ShaderToy Shader转换成Unity可用的Shader 做图形开发的同学没有不知道 ShaderToy 网站的,它是由大神 iq - Inigo Quilez 创建的。 ShaderToy网站包含了大量效果精彩绝伦的shader,但是这些shader是用WebGL Shader语言编写的,不适用于Unity ShaderToy。...

在URP中实现高度雾和远景雾

发布时间: 2022年05月21日
使用RenderFeature分别实现了透视相机和正交相机的高度雾和远景雾 如图: 透视相机 正交相机 如何RenderFeature在渲染管线中插入一个Pass用于渲染雾 1. 使用CommondBuffer.DrawMesh 在 RenderPassEvent . AfterRenderingSkybox 这个事件之后画一个全屏幕大小的Mesh片...

如何录制Unity 场景中的声音

发布时间: 2022年05月10日
有些时候我们在游戏想录制游戏内部的声音,那么常用的Unity的 MicroPhone API就没什么用了。 好在Unity还提供了 OnAudioFilterRead 这个API来完成这类需求。 这个方案来自: http://evanxmerz.com/blog/index.php/2016/10/07/recording-in-game-audio-in-unity/ 实现步骤:...

Unity Shader之流光效果

发布时间: 2022年05月09日
流光效果,支持控制流光 宽度 , 颜色 , 角度 URP版本 Shader "Unlit/LightFlow" { Properties { _MainTex ("Texture", 2D) = "white" {} _LightColor ("Light", Color) = (1,1,1,1) _LightWidth ("Light width", float) = 0.2...

使用Unity JobSystem模拟SplineMesh

发布时间: 2022年05月09日
概述 在数学学科数值分析中,样条(Spline)是一种特殊的函数,由多项式分段定义。样条的英语单词spline来源于可变形的样条工具,那是一种在造船和工程制图时用来画出光滑形状的工具。 在计算机科学的计算机辅助设计和计算机图形学中,样条通常是指分段定义的多项式参数曲线。由于样条构造简单,使用方便,拟合准确,并能近似曲线拟合和交互式曲线设计中复杂的形状,样条是这些领域中曲线的常用表示方法。...

聚群模拟

发布时间: 2022年04月29日
This demo was converted from threejs version, you could check the threejs version here 1. You could check this unity demo on github . 2. About the code: The Boid class struct: Fields of boid: //...

边缘检测算法分类

发布时间: 2022年04月29日
一、 基于梯度的算法 1、Roberts边缘检测算子 X方向: 1 0 0 -1 Y方向: 0 1 -1 0 通过计算两个相邻的对角线方向的像素差的梯度值来实现。 优点 :在沿着边缘方向和垂直边缘方向均优于斜向边缘,定位精度高 缺点 :对噪声敏感,只适用于含噪声较少的图像 2、Sobel边缘检测算子 X方向: -1 0 1 -2 0 2 -1 0 1 Y方向: -1 -2 -1 0 0 0 1...