Unity
贤愚
这个作者很懒,什么都没留下…
展开
-
噪声笔记#3 梯度噪声_Perlin Noise
value noise 看起来非常“块状”。为了消除这种块状的效果,在 1985 年 Ken Perlin 开发了另一种 noise 算法 Gradient Noise。Ken 解决了如何插入随机的 gradients(梯度、渐变)而不是一个固定值。这些梯度值来自于一个二维的随机函数,返回一个方向(vec2 格式的向量),而不仅是一个值(float格式)。perlin噪声相对于之前值噪声修...原创 2018-11-18 19:29:22 · 2795 阅读 · 0 评论 -
可编程渲染管线7 反射
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/reflections/添加镜面高光 环境反射 支持非统一缩放 使用反射探针 透明度和反射度的结合这是Unity可编程渲染管线系列教程的第七章,本章将添加物体的反射,包括镜面高光和反射探针的采样。该教程基于Unity 2018.3.0f2...翻译 2019-04-15 18:09:27 · 1289 阅读 · 0 评论 -
UnityShader-基于网格顶点的草丛
发现了一篇写草丛的文章,自己跟着写了遍,并添加了自定义的形状和密度。思路:1、利用几何着色器,将每个顶点转为一个叶片网格2、利用曲面细分生成新顶点控制草丛密度3、贴图加clip决定叶片形状4、利用旋转矩阵完成动态和随机效果shader文件Shader "Custom/GrassShaderWithTexture"{ Properties {...原创 2019-04-07 15:31:21 · 2939 阅读 · 1 评论 -
Unity-VolumeLighting组件(体积雾/光效果)使用小记
Unity的实例《Neno》就使用了VolumeLighting 组件突然发现了Unity提供的一个开源组件VolumeLighting ,简单记一下用法。下载地址:https://github.com/Unity-Technologies/VolumetricLightingVolumetric fog首先需要在目标相机上挂载一个Volumetric fogG...原创 2019-04-04 14:24:21 · 21047 阅读 · 5 评论 -
Unityshader水体笔记
总结一下最近学习的东西折射GrabPass{}获取水下的贴图 采样添加法线的扰乱水体密度以水深参考,越深颜色越重反射写一个脚本用于获取反射贴图,采样添加法线的扰乱脚本的主要内容为:1、获取主相机和水平面,并生成一个和主相机配置相同的反射相机2、根据主相机位置和水平面得到反射矩阵,计算得到反射相机的位置3、修改反射相机的世界-相机矩阵4、修改反射相机的投...原创 2019-03-11 17:51:45 · 2750 阅读 · 1 评论 -
可编程渲染管线6 透明度
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/transparency/执行透明度测试 渲染双面网格 支持不同的混合模式 生成双面网格 使用预设创建着色器GUI这是可编程渲染管线的第六部分,添加对透明度裁切和半透明材质的支持。该教程基于 Unity 2018.3.0f2不透明...翻译 2019-03-15 20:24:52 · 1193 阅读 · 0 评论 -
UnityShader BRDF的简易实现
最近《3D游戏与计算机图形学中的数学方法》看到双向反射分布函数,开头的各种术语把爷整懵了,看完才发现竟然前面只是介绍了原理!!!果然我还是安安分分地套公式好了。BRDF函数:k表示表示入射光中被漫反射出去的部分光能,1-k则表示剩余的光能,被物体吸收或成为镜面反射。可以差不多把1-k看做金属值。D表示漫反射颜色,我们简单的用兰伯特光照模型计算即可。重点就在于镜面反射函数...原创 2019-02-23 19:38:19 · 2080 阅读 · 0 评论 -
Unity 大规模鱼群的渲染
看了GDC关于ABZU的演讲,感觉很受启发,决定在Unity中实现其中讲到的鱼群的渲染。1、用顶点动画代替骨骼节点首先是一个基础的shader,这里我写了一个支持主贴图和法线贴图的只有漫反射的shader 大概就是这样:Shader "FishTest/FishShader"{ Properties { _MainTex ("Texture", 2D) = "wh...原创 2019-05-03 20:33:49 · 3020 阅读 · 0 评论 -
可编程渲染管线8 全局光照
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/global-illumination/烘焙和采样光照贴图 显示直射光 创建自发光材质 通过探针和LPPV采样光线 支持预计算的实时全局光照这是Unity可编程渲染管线系列教程的第八部分。我们不仅将支持静态的全局光照还会支持动态的全局光照。...翻译 2019-05-07 21:14:59 · 2930 阅读 · 1 评论 -
可编程渲染管线11 后处理
这是Unity可编程渲染管线教程的第十一章。这一章我们将学习创建一个后处理栈。本教程基于Unity 2018.4.4f1。修改:我移除了在先前教程中使用的VPOS语义。如果你也使用了VPOS,建议把它换掉。1 后处理栈场景的渲染结束之后,我们还可以进一步修改图像。用来实现一些全屏特效,比如环境光遮蔽,bloom,color grading,景深等。通常来说多个后处理会按...翻译 2019-08-26 11:25:29 · 2554 阅读 · 0 评论 -
噪声笔记#7 无缝噪声生成
最近想尝试体积云,需要用到3D的无缝噪声,所以学习了一下主要看到了两个思路一个是用利用圆的周期性在高一倍纬度的噪声中采样生成低纬度的无缝噪声比如在4d中采样2d无缝,在6d中采样3d无缝还有一种适用于那些基于网格位置得到随机值的噪声,只要让边界网格的随机值一样,结果自然是无缝的搜的一些资料:https://blog.csdn.net/yolon3000/article/deta...原创 2019-07-22 15:09:49 · 731 阅读 · 3 评论 -
可编程渲染管线10 多细节层次(LOD)
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/level-of-detail/设计两种类型的LOD组 LOD层次的淡入淡出 应用screen-space dithering 使用动态的 dither 图案 剔除无用的着色器变种这是Unity可编程渲染管线教程的第十章。添加对LOD组淡入淡...翻译 2019-07-08 12:38:35 · 2786 阅读 · 1 评论 -
Shader记录——印刷风格
效果:思路:https://www.bilibili.com/video/av55864327贴图:Ps:这两张不是可以完美平铺的,如果可以最好用可平铺的纹理。代码:Shader "MyShader/ClipPainterShader"{ Properties { _Color("Color",Color)=(0,0,0,0) ...原创 2019-07-07 19:18:29 · 273 阅读 · 0 评论 -
可编程渲染管线9 阴影烘焙
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/baked-shadows/渐变的实时阴影 使用shadowmask和阴影探针 为每个物体使用至多四个烘焙阴影 常规的shadowmask和 distance shadowmask 支持subtractive模式.这是Unity可编程渲染管线...翻译 2019-06-14 15:20:10 · 1399 阅读 · 0 评论 -
Unity Gizmos 绘制扇形
线框扇形是用线条拼起来的,实心的扇形的是提前生成好mesh,然后用drawmesh。using UnityEngine;public static class GizmosTools{ /// <summary> /// 绘制半圆 /// </summary> public static void DrawWireSemi...原创 2019-06-18 22:04:33 · 3291 阅读 · 1 评论 -
在Unity里使用光线步进(Raymarching)
图中光滑球为光线步进产生,粗糙球为Unity的场景物体概念光线步进和光线投射类似,都是从屏幕发射射线,然后求射线和物体的焦点,但是光线投射是一次性算出交点,而光线步进是一步步的前进,不断的向交点趋近,光线步近中的物体使用一种距离场函数来表示(SDF,Signed-distance-field 有向距离场)。通过这个函数你可以知道当前点的位置位置和物体的最近距离,如果距离趋向于0,就说...原创 2019-06-07 19:21:30 · 3638 阅读 · 1 评论 -
可编程渲染管线4 聚光灯阴影
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/spotlight-shadows/读取并渲染纹理 从光的角度渲染 为阴影投射(shadow casters)添加一个着色器pass 采样阴影贴图 支持软阴影和硬阴影混合 在单个图集中组合多达16个阴影贴图。这是Unity可编程渲染管线教程...翻译 2019-02-11 17:55:16 · 1667 阅读 · 0 评论 -
unity编辑器扩展#3 《Extending Unity with Editor Scripting 》笔记
#1 编辑器创建新场景EditorApplication.SaveCurrentSceneIfUserWantsTo();//打开是否保存场景的对话框EditorApplication.NewScene();//创建新场景,方法以废弃=> EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects);//E...原创 2018-12-14 18:14:48 · 1244 阅读 · 0 评论 -
unity编辑器扩展#2 GUILayout、EditorGUILayout 控件整理
GUILayout装饰类控件:GUILayout.FlexibleSpace();GUILayout.Space(100);//空格,没什么好说的GUILayout.Label("label");GUILayout.Box(new GUIContent("一个200x200的BOX"),new []{GUILayout.Height(200),GUILayout....原创 2018-12-06 13:39:48 · 28920 阅读 · 6 评论 -
unity编辑器扩展#1 自定义窗口、面板、和属性
撸一遍unity官方文档的给的三个案例:https://docs.unity3d.com/2017.4/Documentation/Manual/editor-EditorWindows.html自定义窗口首先,要注意和编辑器相关的脚本都应该把放到Editor文件夹里,可以有多个Editor文件夹。然后创建一个继承自EditorWindow的类using System.Col...原创 2018-12-06 13:39:31 · 4529 阅读 · 0 评论 -
噪声笔记#5 Worley噪声
Worley noise也叫Voronoi/Cellular noise,叫Voronoi是因为基于Voronoi 算法,Voronoi图,叫Worley是因为1996年Steven Worley 写了一篇名为“A Cellular Texture Basis Function”的论文。在这篇论文里,他描述了这种现在被广泛使用的程序化纹理技术。worely噪声有别与前面几种噪声,它是随机生成几...原创 2018-11-26 21:04:14 · 2787 阅读 · 2 评论 -
噪声笔记#6 分形布朗运动
分形布朗运动(Fractal Brownian Motion)也就是fbm,它不是噪声,但是他可以让噪声有更多的细节。可以看成把不同比例位置的一张噪声合并在一起。// Propertiesconst int octaves = 1;float lacunarity = 2.0;float gain = 0.5;//// Initial valuesfloat amplitude ...原创 2018-11-29 19:32:05 · 6536 阅读 · 3 评论 -
噪声笔记#2 插值和值噪声
白噪声实在是太随机了,随机值之间没什么相关性,而在现实中,像波浪,叶脉纹理这些在随机中又带着规律性,因此想要模拟这些的噪声(Noise)也需要在随机中带点相关性。(1)用插值连接随机点之前实现白噪声,每个像素块彼此完全独立,随机点之间没有联系。想要把这些随机点连接起来就需要插值。这里列几个常用的插值方法 比如说有这样几个随机点第一种,线性插值 :,float i = fl...原创 2018-11-16 21:47:01 · 1599 阅读 · 0 评论 -
噪声笔记#4 梯度噪声_Simplex Noise
柏林噪声很好用,但是它计算需要的顶点数是,随着维度的增加,需要的顶点数急剧上升。于是在2001 年的 Siggraph上,他展示了 “simplex noise”,它比perlin有更低的计算量和优化。Simplex是单形的意思通俗解释单形的话,可以认为是在N维空间里,选出一个最简单最紧凑的多边形,让它可以平铺整个N维空间。我们可以很容易地想到一维空间下的单形是等长的线段(1-单形),把...原创 2018-11-22 14:49:41 · 1591 阅读 · 0 评论 -
噪声笔记#1 随机值和白噪声
噪声其实就是程序中的一些随机变量,所以想要生成噪声就先要有一个能够生成(伪)随机数的方法生成随机数的一些方法(1)HASHhash函数是可以用来生成随机数 而且很常用,他会根据输入的种子数生成并返回对应的随机数,在图形学中,通常返回0-1 常用HASH函数·直接取余法:f(x):= x mod maxM ; maxM一般是不太接近 2^t 的一个质数。·乘法取整法:f(x)...原创 2018-11-13 19:44:57 · 1828 阅读 · 0 评论 -
Unity- CommandBuffer和PostProcessing插件
CommandBufferCommandBuffers是预先写好一系列的渲染指令,然后在摄像机渲染时可以在适当的时机插入这一段指令,总之还是先看一下官方的案例第一个是一个毛玻璃的案例,commandBuffers的任务就是为毛玻璃材质的shader提供一张模糊后的屏幕截图,类似GrabPass下面放的是我为了方便理解删减过的代码,不过用的shader仍然是案例的shader,一个用于高...原创 2018-12-26 20:10:42 · 3435 阅读 · 0 评论 -
Unity里的正向渲染
正向渲染在正向渲染中,最亮的几个光源会进行逐像素计算,较次的后继四个会进行逐顶点计算,省下的则是进行球谐(Spherical Harmonics)计算逐像素计算的光源的最多数量可以是自己设置 Edit->Project Seting->Quality 默认是4个决定一个光源是逐像素计算还是其他的,取决于以下几点1、最亮的直射光(directional light)...原创 2018-12-30 22:02:26 · 1395 阅读 · 0 评论 -
可编程渲染管线3 光照
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/lights/执行漫反射着色 支持方向光、点光、聚光 支持每帧最多16个可见光源 为每个物体计算4个像素光源和4个顶点光源。这是可编程渲染管线教程的第三章。这章我们将为物体提供漫反射光照支持。通过单个draw call,为每个物体添加最多八个着...翻译 2019-02-05 21:42:53 · 1252 阅读 · 0 评论 -
可编程渲染管线2 自定义着色器
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/custom-shaders/写一个HLSL shader 定义常量缓冲区(constant buffers) 使用渲染管线核心库文件(Render Pipeline Core Library). 支持动态批处理和GPU实例.这是Unity可编...翻译 2019-02-01 19:39:19 · 4662 阅读 · 1 评论 -
可编程渲染管线1 自定义通道
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/custom-pipeline/该教程基于Unity 2018.3.0f2.1、创建通道想要渲染任何东西,Unity都需要确定绘制什么形状,何时绘制,在哪绘制,以及使用何种设置。取决于涉及的效果的数量,这可能会非常复杂。将光照、阴影、透明度、...翻译 2019-01-28 20:15:06 · 1549 阅读 · 0 评论 -
Unity里的延迟渲染
延迟渲染延迟渲染渲染下,光源计算的消耗的消耗和光源占屏幕的范围(像素)相关,而不是像正向渲染中,和光源照射的物体数量相关。延迟渲染也分为2个Pass(不在同一个shader里)GBuffer Pass(Defferred Pass):这个pass写在想要支持延迟渲染的游戏物体的shader里,和正向渲染不同,Gbuffer会渲染输出4份贴图(如果用了混合光照还有第五份)RT0, ...原创 2019-01-14 14:51:43 · 4973 阅读 · 3 评论 -
UnityShader-阴影
渲染阴影的过程一 渲染屏幕空间的深度贴图 (DepthTexture)在正向渲染里,unity会先用ShadowCaster这个Pass渲染一遍场景,得到一张深度贴图 (PS:延迟渲染,深度贴图和albedo specular之类在Deferred Pass里统一计算一并放在Gbuffer里,不会专门单独渲染)二 渲染光源方向的深度贴图(ShadowMap)然后u...原创 2019-01-08 18:05:10 · 3015 阅读 · 0 评论 -
UnityShader-环境反射
环境的反射算在间接光的镜面反射中UnityIndirect CreateIndirectLight(v2f i,float3 viewDir){ ... #if defined(FORWARD_BASE_PASS) ... //得到反射方向 float3 reflectDir=reflect(-viewDir,i.normal); //得...原创 2019-01-10 13:51:36 · 7960 阅读 · 0 评论 -
可编程渲染管线12 图像质量
这是Unity可编程渲染管线的第十二章,在本章中,我们将通过调整渲染比例、应用MSAA 、HDR缓冲配合tone mapping等方式来提升画面质量。该教程基于Unity2018.4.6f1。1 渲染比例(Render Scale )相机的设置决定了渲染图像的高和宽,这一过程不在我们渲染管线的管理范围内。但是在渲染到相机的渲染目标前,我们可以对图像做任意的操作。也就是说我们可以创建...翻译 2019-11-18 16:33:19 · 2341 阅读 · 0 评论