精华内容
下载资源
问答
  • Amplify Shader Editor 1.7.5 Unity Shader可视化编辑插件最新版,很好的可视化插件,可以很轻松的编辑Shader,Unity着色器可视化编辑器插件。
  • Shader Forge 1.38 Unity Shader 可视化编辑插件,很强大的插件,对于shader编写很有帮助,用过的都知道,希望对大家有帮助。
  • Unity shader可视化编辑器初始化

    千次阅读 2018-07-17 16:25:08
    安装:菜单栏 Window -> Package Manager -> All,分别选中Packages目录下的Shader...初始:Project视图,Assets目录下任意位置,右键 -> Create -> Rendering -> Lightweight...

    安装:菜单栏 Window -> Package Manager -> All,分别选中Packages目录下的Shadergraph与Render-pipelines.lightweight,点击Install按钮进行安装。

    初始化:Project视图,Assets目录下任意位置,右键 -> Create -> Rendering -> Lightweight Pipeline Asset;然后点击菜单栏Edit -> Project Settings -> Graphics,在其检视面板的Scriptable Render Pipeline Setting属性值设置为刚才创建的那个文件。

    创建shader:Project视图Assets目录下,右键 -> Create -> Shader,选择Graph结尾的三种文件创建,创建后双击即可打开shader可视化编辑器。

    官方API网址:https://github.com/Unity-Technologies/ShaderGraph/wiki

    (本文使用unity版本为2018.2.0f2)

    展开全文
  • unity-shader-ShaderGraph可视化shader

    千次阅读 2019-05-05 11:33:28
    title: unity-shader-ShaderGraph可视化shader categories: Unity3d tags: [unity, shader, ShaderGraph, 可视化] date: 2019-05-03 18:04:23 comments: false unity-shader-ShaderGraph可视化shader, 和 shader ...

    title: unity-shader-ShaderGraph可视化shader
    categories: Unity3d
    tags: [unity, shader, ShaderGraph, 可视化]
    date: 2019-05-03 18:04:23
    comments: false

    可视化shader, 和 shader forge 插件, ue4 材质编辑器 类似的东西, 都是通过可视化链接节点来编写逻辑代码, 然后会自动 编译 就能看到效果.
    ShaderGraph 需要用到 lightweight rp. 里面内置了一些常用的公式 如: frensel, 很简单就可以使用. 可见写 shader 的门槛越来越低了, 如果知道基点的实现原理会更好, 这个可以通过官网文档查阅到, 每个节点都有对应的代码实现. 官网文档 - https://docs.unity3d.com/Packages/com.unity.shadergraph@6.5/manual/index.html


    前篇

    要点击左上角的 save asset 才会编译生效, 这个和 ue4 的 apply 一样

    疑问

    上面几个问题还是得用以前的写 xxx.shader 代码的方式去解决.


    相关使用方式

    shader 命名规则

    • reference 属性的 _MainClr 才是 uniform 变量的命名, 也就是程序设置参数的命名.

    替换预览模型

    预览节点右键 custom mesh 就可以选择别的模型


    安装 shader graph

    当前版本 unity2018.3.11f1. 安装了 shader graph 后, 之前写的 xxx.shader 将会无效 (变成紫色).
    所以最好还是另起一个lwrp的模板工程用来学习.

    参考: Unity-Shader Graph 安装 - https://blog.csdn.net/liquanyi007/article/details/80771441

    1. 默认的 3d 工程没有 shader graph, 需要通过 package manager 安装 lightweight rp, shadergraph 这两个包, 才能使用 shader graph.

      如果是 2019 之前的是预览版, 需要在 advance 勾选上 show preview packages 才能显示出来

    2. 创建一个 lwrp asset. create -> rendering -> lightweight pipeline asset

      然后指定项目使用这个 asset, 才肯使用 shader graph. Edit -> Project Setting -> Graphics

    3. 然后 create -> shader 才会出现有 graph 的选项


    自定义节点 custom node

    相关参考:

    1. 增加一个自定义节点脚本

      using System.Reflection;
      using UnityEditor.ShaderGraph;
      using UnityEngine;
      
      [Title("Custom", "My Custom Node1")] // 创建节点时 节点所在的组, 可有n多个层级
      public class MyCustomNode : CodeFunctionNode {
          public MyCustomNode() {
              name = "My Custom Node2"; // graph 中节点名字
          }
      
          protected override MethodInfo GetFunctionToConvert() {
              return GetType().GetMethod("MyCustomFunction",
                  BindingFlags.Static | BindingFlags.NonPublic);
          }
      
          // 计算公式
          static string MyCustomFunction(
              [Slot(0, Binding.None)] DynamicDimensionVector A, [Slot(1, Binding.None)] DynamicDimensionVector B, [Slot(2, Binding.None)] out DynamicDimensionVector Out) {
              return @"
      {
          Out = A + B;
      } 
      ";
          }
      }
      
    2. 然后就可以在 graph 中使用

      • 节点可以是 vector1,2,3,4, 只要 A 或 B 其中一个换成其他参数类型, 其他两个节点也会跟着变化

    数据类型

    Name Color Description
    Vector 1 Light Blue A Vector 1 or scalar value
    Vector 2 Green A Vector 2 value
    Vector 3 Yellow A Vector 3 value
    Vector 4 Pink A Vector 4 value
    Dynamic Vector Light Blue See Dynamic Data Types below
    Matrix 2 Blue A Matrix 2x2 value
    Matrix 3 Blue A Matrix 3x3 value
    Matrix 4 Blue A Matrix 4x4 value
    Dynamic Matrix Blue See Dynamic Data Types below
    Dynamic Blue See Dynamic Data Types below
    Boolean Purple A Boolean value. Defined as a float in the generated shader
    Texture 2D Red A Texture 2D asset
    Texture 2D Array Red A Texture 2D Array asset
    Texture 3D Red A Texture 3D asset
    Cubemap Red A Cubemap asset
    Gradient Grey A Gradient value. Defined as a struct in the generated shader
    SamplerState Grey A state used for sampling a texture

    常用节点

    法线节点

    sample texture 2dType 的设置为 Normal 才是 法线图 的采样, 得到蓝色的才是正确的
    Default 为普通贴图的采样


    边缘 rim

    fresnel effect, 使用很方便, 已经把 世界空间 下的 法线和观察方向 算好用来 dot 处理, 只需要填充一下 指数 Power 即可.
    ps: 这些节点如果了解过 fresnel 公式的话自然就比较清楚这些节点都干了什么事情.


    纹理uv偏移

    tilling and offset, 相当于 o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); 中的 TRANSFORM_TEX

    做 uv流动 效果的时候就需要用到这个节点

    uv流动的几种方式

    1. 基于 纹理uv. 模型顶点的uv值. (看起来有点乱, 因为 uv值 的是在 uv展开 的时候决定的)

    2. 基于 顶点位置, 又分为 切线,对象,世界,观察 四个空间的

      • 观察空间下

    3. 基于 屏幕空间的位置. 简答的理解就是屏幕的 左下角是(0,0), 右下角是(1, 1), 顶点都位于这个区间内


    appdata 节点

    也就是 cpu 到 gpu 的数据结构中的字段, 比如

    struct appdata_full {
        float4 vertex : POSITION;
        float4 tangent : TANGENT;
        float3 normal : NORMAL;
        float4 texcoord : TEXCOORD0;
        float4 texcoord1 : TEXCOORD1;
        float4 texcoord2 : TEXCOORD2;
        float4 texcoord3 : TEXCOORD3;
        fixed4 color : COLOR;
    };
    

    在 shader graph 中为以下节点

    Name Data Type Description
    Position Vector 3 Vertex or fragment position, label describes expected transform space
    Tangent Vector 3 Vertex or fragment tangent vector, label describes expected transform space
    Normal Vector 3 Vertex or fragment normal vector, label describes expected transform space
    Bitangent Vector 3 Vertex or fragment bitangent, label describes expected transform space
    UV Vector 2 UV0, UV1, UV2, UV3
    Vertex Color Vector 4 RGBA vertex color value.

    示例说明

    积雪

    step 函数使用的频率非常高, 常用于条件的判断 (替代 if-else, 更优于gpu并行计算). 之前也总结过 unity-shader-GPU优化_step函数替代if-else.

    step(a, b) : 如果 a <= b,返回 1 ;否则,返回 0

    官方示例中的 积雪 效果

    • snow direction : (0, 1, 0), 也就是y轴正方向
    • snow depth : 0, 这一步step也就是判断哪些 面 的 法线 与 (0, 1, 0) 的夹角小于 90 度

    卡通

    • 光的方向与法线的 点乘 结果从 [-1, 1] 映射到 [0, 1] (映射算法 (x+1)/2), 再去采样 Tamp 贴图作为光照的强度.

    常用快捷键

    various shortcut keys to use for better workflow.

    Hotkey Windows OSX Description
    Focus F F Focus the workspace on all or selected Nodes
    Create Node Spacebar Spacebar Opens the Create Node Menu
    展开全文
  • Shader 函数可视化

    2018-09-06 16:09:35
    可视化呈现: y = smoothstep(0.0,1.0,x); 三、clamp 将值限制在两个其他值之间。 link 说明 : clamp() 返回 minVal 到 maxVal 范围内的值。返回值计算:min(max(x, minVal), maxVal)。 使用 : float ...

    一、正弦余弦

    正弦运动y = sin(x)

    余弦运动y = cos(x)

    动画演示:

    通过给sin()cos()添加一些处理,可以制作出更多有趣的效果:

    二、smoothstep

    在两个值之间取埃尔米特插值(Hermite interpolation)link,它的值永远是 0~1。

    描述:在edge0edge1之间取一个平缓的差值,在我们需要一个平滑的渐变的时候特别有用。当前值小于edge0,取值为0。当前值大于edge1,取值1。在这个区间内,取edge0edge1的差值。

    适用场景1:由于它的值永远介于 0~1,edge0 和 edge1 的差值只会决定曲线的陡或平缓,所以我们可以控制他们的差值来做一些动画速度的变化。比如:

    zoom(uv, smoothstep(0.0, nQuick, progress));
    复制代码

    上面通过控制 nQuick 的值来决定 zoom 缩放速度了。

    适用场景2smoothstepedge0,edge10的时候,相当于step

    smoothstep(0.0, 0.0, x);
    复制代码

    那我们怎么实现类似 step(edge, x) 的 edge 移动的效果呢,只需要这么做就一样了:

    smoothstep(0.0, 0.0, x-edge);
    复制代码

    smoothstep() 的运算同样可以制作出一些不同的变体曲线:

    y = smoothstep(0.0,1.0,x) - smoothstep(1.0,  2.0, x); 
    复制代码

    使用

    float smoothstep(float edge0, float edge1, float x)  
    vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x)  
    vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x)  
    vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x)
    
    vec2 smoothstep(float edge0, float edge1, vec2 x)  
    vec3 smoothstep(float edge0, float edge1, vec3 x)  
    vec4 smoothstep(float edge0, float edge1, vec4 x)
    复制代码

    它等同于:

    genType t;  /* Or genDType t; */
    t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
    return t * t * (3.0 - 2.0 * t);
    复制代码

    可视化呈现:y = smoothstep(0.0,1.0,x);

    三、clamp

    将值限制在两个其他值之间。link

    说明clamp()返回minValmaxVal范围内的值。返回值计算:min(max(x, minVal), maxVal)。

    使用

    float clamp(float x, float minVal, float maxVal)  
    vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal)  
    vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal)  
    vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal)
    
    vec2 clamp(vec2 x, float minVal, float maxVal)  
    vec3 clamp(vec3 x, float minVal, float maxVal)  
    vec4 clamp(vec4 x, float minVal, float maxVal)
    复制代码

    可视化呈现:y = clamp(x,0.,1.);

    四、step

    通过比较两个值生成步进函数。link

    说明step()通过将xedge进行比较来生成步进函数。对于返回值i,如果x[i] < edge[i]则返回0.0,否则返回1.0

    适用场景step()有着一个最大的特征,那就是非黑即白。edge 表示非黑即白的边界,小于edge就是黑(0),大于edge就是白(1)。当我们这么使用时,可以判断像素点是否存在归一化坐标系里:

    step(0.0, p.y) * step(p.y, 1.0) * step(0.0, p.x) * step(p.x, 1.0)
    复制代码

    当它为 0 时,表示像素点在水平或垂直方向超出了边界;当它为 1 时,表示在坐标系内。当我我们把它和mix(texture2D_1, texture2D_2, step())函数一起用时,就可以得到非黑即白的两张相连的纹理图(纹理图超过边界的部分会用纹理图2取代)。

    使用

    float step(float edge, float x)  
    vec2 step(vec2 edge, vec2 x)  
    vec3 step(vec3 edge, vec3 x)  
    vec4 step(vec4 edge, vec4 x)
    
    vec2 step(float edge, vec2 x)  
    vec3 step(float edge, vec3 x)  
    vec4 step(float edge, vec4 x)
    复制代码

    可视化呈现:y = step(0.5,x);

    五、mod

    以第二个模数计算第一个参数的值。

    说明x指定要求模的值,y指定要获取模数的值。计算公式为:x - y * floor(x / y)

    使用

    float mod(float x, float y)  
    vec2 mod(vec2 x, vec2 y)  
    vec3 mod(vec3 x, vec3 y)  
    vec4 mod(vec4 x, vec4 y)
    
    vec2 mod(vec2 x, float y)  
    vec3 mod(vec3 x, float y)  
    vec4 mod(vec4 x, float y)
    复制代码

    可视化呈现:y = mod(x,1.)

    六、fract

    计算参数的小数部分。

    说明fract()返回x的小数部分。计算公式为x - floor(x)

    适用场景:假如我们在一个归一化的坐标系里,fract(uv) 能够让像素点永远都在坐标系里不会超出边界。以从上往下平移作为例子,fract()可以让从上往下的平移无限循环,且首尾相连。

    使用

    float fract(float x)  
    vec2 fract(vec2 x)  
    vec3 fract(vec3 x)  
    vec4 fract(vec4 x)
    复制代码

    可视化呈现:y = fract(x)

    七、floor

    找到小于或等于参数的最接近的整数

    说明floor()返回一个等于最小整数的值,该整数小于或等于x

    使用

    float floor(float x)  
    vec2 floor(vec2 x)  
    vec3 floor(vec3 x)  
    vec4 floor(vec4 x)
    
    复制代码

    可视化呈现:y = floor(x)

    八、ceil

    找到大于或等于参数的最近整数

    说明ceil()返回一个等于最接近的整数的值,该整数大于或等于x

    使用

    float ceil(float x)  
    vec2 ceil(vec2 x)  
    vec3 ceil(vec3 x)  
    vec4 ceil(vec4 x)
    复制代码

    可视化呈现:y = ceil(x);

    九、sign

    提取参数的符号。

    说明:如果x小于0.0,则sign()返回-1.0,如果x等于0.0,则返回0.0,如果x大于0.0,则返回+1.0

    适用场景sign()用来判断运动方向非常高效,因为它的值只有 -1,0,1,所以我们可以通过

    vec2 direction = vec2(0.0, 1.0);   // x, y 代表方向
    sign(direction)
    复制代码

    来判断水平和垂直的方向,正数为正方向,负数为反方向,也不用担心用户传了超出长度为1的值。

    使用

    float sign(float x)  
    vec2 sign(vec2 x)  
    vec3 sign(vec3 x)  
    vec4 sign(vec4 x)
    复制代码

    可视化呈现:y = sign(x);

    十、mix

    将值限制在两个其他值之间并做融合,常用于颜色混合:

    说明mix()xy之间执行线性插值,使用它们之间的权重。返回值计算为x*(1-a)+y*a。可以这么理解,a决定了x,y所占的比重,比如a < 0.5,那么x的比重更大,a > 0.5y的比重更大。当 a = 0.5时,xy的比重各一半。

    使用场景:我们经常会有一些动画,需要在单位时间内往返一次,比如先放大后缩小。通过以下公式可以轻松做到(scale 表示放大的倍数):

    mix(scale, 1.0, 2.0 * abs(progress - 0.5))
    复制代码

    上面的公式即可做到先放大到scale(当进度为0.5时达到最大),然后再缩小到1

    使用

    float mix(float x, float y, float a)  
    vec2 mix(vec2 x, vec2 y, vec2 a)  
    vec3 mix(vec3 x, vec3 y, vec3 a)  
    vec4 mix(vec4 x, vec4 y, vec4 a)
    
    vec2 mix(vec2 x, vec2 y, float a)  
    vec3 mix(vec3 x, vec3 y, float a)  
    vec4 mix(vec4 x, vec4 y, float a)
    复制代码

    可视化呈现:y = mix(0.,1.,x);

    展开全文
  • Amplify Shader Editor 1.7.7 Unity 可视化shader编辑插件,把shader编辑变成可以直接看的过程,用过的都知道,不用我说了。
  • Shader Forge可视化Unity3D Shader编辑器一-简介一、简介 1.Shader Forge是一个基于节点的可视化shader编辑器2.Shader Forge的目标是提升Unity的视觉效果到一个新的高度3.在不使用代码的条件下,自由,直观的创建...

    Shader Forge可视化Unity3D Shader编辑器一-简介

    一、简介
    1.Shader Forge是一个基于节点的可视化shader编辑器

    2.Shader Forge的目标是提升Unity的视觉效果到一个新的高度

    3.在不使用代码的条件下,自由,直观的创建自己的shader

    二、功能
    1.效果实时shader预览

    2.可视,直接的界面

    3.支持基础光照,Blinn-Phong光照,Phong光照

    4.基于图像的光照,完美与Marmoset Skyshop结合

    5.顶点动画

    6.DX11棋盘花纹位移

    7.支持Unity Free和Pro版本

    8.不依赖其它文件

    9.大量的节点文档,大量的教程

    10.自带12个示例shader,你可以自由编辑修改,直接使用

    11.支持自定义光照

    12.支持轮廓宽度与颜色

    13.还有更多功能,就不列出来,自己去探索吧!

    sf_ss_mainpage_a
    sf_ss_mainpage_b
    三、参考资料
    原文地址:http://www.rukawa.cn/index.php?s=/home/article/detail/id/32.html

    下载Shader Forge 1.03:
    http://www.rukawa.cn/Uploads/Attachment/Shader/Shader_Forge_1.03.unitypackage

    官方地址:http://www.acegikmo.com/shaderforge/

    交流QQ:1424696757

    展开全文
  • Shader Forge可视化unity3d Shader编辑器二-基础着色器 通过本教程,你将学会创建一个基础shader,支持颜色,漫反射,法线贴图。 一、整体节点图与效果,Rukawa_Base.shader下载 二、详细步骤 1....
  • Unity Shader Graph 可视化着色器 —— 节点之 Master、Math 本文链接:https://blog.csdn.net/qq_15505341/article/details/80785963 Master(可以理解为最终的输出,有且只有一个) PBR Master 基于物理渲染...
  • 大家好,我是怒风,本篇介绍公式可视化公式工具ZGrapher,尝试通过可视化的方式分析一下Shader中应用的公式,以求帮助初学者快速理解Shader编程中的一些常用公式 本篇的目的两个, 第一,介绍可视化公式工具...
  • (Shader Graph文档的解释) Matrix(矩阵) Matrix 2×2/3×3/4×4 创建矩阵 Transformation Matrix 获取一个变换矩阵 PBR Dielectric Specular ??? Metal Reflectance 金属反射 ...
  • Adjustment(调节) Channel Mixer 通道混合 ——更改RGB各通道的占比 Contrast 对比度调整 Hue 色调调整 Invert Colors 反转颜色——看起来像是加了一层颜色 Replace Color 替换颜色 Saturation 饱和度调整 ...
  • unity2018可视化shader安装步骤

    千次阅读 2018-05-27 21:18:52
    安装总结:有的资源没有,但可以在菜单创建的,...步骤1、在unity的包管理器(unity2018以上)2、安装lightweight,安装时会和shadergraph一起安装的3、在资源视图创建一个lightweight资源4、在项目中配置该资源即可...
  • Shadershop Part 2. Noise[1] 的学习笔记. 0. 绘图工具 Graph Toy by Inigo Quilez Shader Shop Editor by Toby Schachman 1. Random Random(x)=Fract(Sine(x)∗999)Random(x)=Fract(Sine(x)∗999)Random(x)=...
  • 最近学习了Shader的一些知识,发现Shader能实现的效果好多而且很绚丽,可以看看这几篇文章快速了解...但是同时Shader编写又非常不人性化,所以找到了这个可视化Shader编辑插件,名字叫Shader Forge,点击进入Asset S
  • Web Audio API 提供了在 Web 上控制音频的一个非常有效通用的系统,允许开发者来自选音频源,对音频添加特效,使音频可视化,添加空间效果 (如平移),等等。Web Audio API 使用户可以在音频上下文(AudioContext)中...
  • Combine 组合 —— 分别输入RGBA然后创建一个颜色 Flip 翻转 —— 去掉某个颜色通道 拿Flip 和 Artistic-Adjustment-Invert Colors 作对比,前者是去掉某个色,后者是加上某个色 拿Flip 和 Artistic-Mask-...
  • 我们昨天发布了Unity 2018.1 beta 版本发布的信息,并且介绍了在这个版本...其中为配合SRP而设计的着色器可视化编程工具Shader Graph,帮助开发者、美术人员等进行可视化的着色器构建。不必手工编写代码,只要在一个
  • AmplifyShaderEditor1.8.2.zip

    2020-05-26 10:13:53
    Amplify Shader Editor1.8.1,很好用的unity shader可视化工具很好用的unity shader可视化工具很好用的unity shader可视化工具
  • 在写之前,首先给大家介绍一个学习shader的网站shadertoy。最近因为做项目要显示向量场,学习了一些GLSL着色语言的知识。虽然GLSL本身不难学,但对一...向量场可视化 绘制向量场的方法有很多种,常见的有LIC(线积...
  • 我们大部分情况下仅使用顶点着色器(vertex shader)和片元着色器(fragment shader),而实际上vulkan还提供了一个可选的几何着色器(geometry shader)。几何着色器位于顶点和片元着色器之间,如果没有使用时,则顶点...
  • Web Audio API 提供了在 Web 上控制音频的一个非常有效通用的系统,允许开发者来自选音频源,对音频添加特效,使音频可视化,添加空间效果 (如平移),等等。Web Audio...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 216
精华内容 86
关键字:

shader可视化