Unity2023.1.19

Unity2023.1.19_ShaderGraph节点说明以及使用技巧

目录

Unity2023.1.19_ShaderGraph节点说明以及使用技巧

1. 快捷键Ctrl+G完成和UE蓝图使用快捷键C一样的蓝图分组注释效果:

2. Tiling And Offset:

3. 以下是两组URP材质渲染的效果对比:

4.  打开Frame Debugger

5. 三种Shader编程语言:

基于OpenGL的OpenGL Shading Language,缩写GLSL;

基于DirectX的High Level Shading Language,缩写HLSL;

基于NVIDIA的C for Graphic,缩写CG;

着色器渲染管线兼容性(重点就是URP、HDRP支持HLSL语言,不支持CG语言,URP项目的渲染选择最好就是HLSL):

 VS Studio-ShaderlabVS插件 

6. 贴段HLSL代码:


1. 快捷键Ctrl+G完成和UE蓝图使用快捷键C一样的蓝图分组注释效果:

2. Tiling And Offset:

 

3. 以下是两组URP材质渲染的效果对比:

左边为:unlit URP,右边为lit URP;

无光照的渲染更加均匀一致,光照渲染更加真实,可以增加修改的预设参数也更多。

4.  打开Frame Debugger

5. 三种Shader编程语言:

  • 基于OpenGL的OpenGL Shading Language,缩写GLSL;
  • 基于DirectX的High Level Shading Language,缩写HLSL;
  • 基于NVIDIA的C for Graphic,缩写CG;
  • 着色器渲染管线兼容性(重点就是URP、HDRP支持HLSL语言,不支持CG语言,URP项目的渲染选择最好就是HLSL):

     

    •  VS Studio-ShaderlabVS插件 

      6. 贴段HLSL代码:

      // 当前Shader在材质面板下拉列表的路径和名字
      Shader "Unlit/NewUnlitShader"
      {
          Properties
          {
              //变量名(显示名称,类型) = 默认值
              _MainTex ("Texture", 2D) = "white" {}
              _MainTexArr("TextureArr", 2DArray) = "white" {}
              _Color("Color", Color) = (1,1,1,1)
              _Int("Int",Int) = 2                     //整形
              _Float("Float",float) = 1.5             //浮点型
              _Range("Range",range(0.0,2.0)) = 1.0    //范围值       
              _Vector("Vector",Vector) = (1,4,3,8)    //向量
              //_MainTex("Texture", 2D) = "white" {}    //贴图
              //_Color("Color",Color) = (1,1,1,1)       //颜色
              _Cube("Cube",Cube) = "white"{}          //天空盒
              _CubeArray("CubeArray",CubeArray) = "white"{}          
              _3D("3D",3D) = "black"{}                //3D贴图       
          }
          SubShader
          {
              Tags 
              { 
                  "RenderType" = "Opaque"
              }
                  //"Queue" = "Transparent"         //渲染顺序
                  //"RenderType" = "Opaque"         //着色器替换功能
                  //"DisableBatching" = "True"      //是否进行合批
                  //"ForceNoShadowCasting" = "True" //是否投射阴影
                  //"IgnoreProjector" = "True"      //受不受Projector的影响,通常用于透明物体
                  //"CanUseSpriteAltas" = "False"   //是否用于图片的Shader,通常用于UI
                  //"PreviewType" = "Plane"         //用作shader面板预览的类型
              LOD 100
              Pass
              {
                  //Name "ExamplePassName"
                  //Tags { 
                  //    "ExampleTagKey" = "ExampleTagValue" 
                  //}
                  此处是 ShaderLab 命令。
                  此处是 HLSL 代码。
                  HLSLPROGRAM
                  #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
                  #pragma vertex vert
                  #pragma fragment frag
                  struct Attributes
                  {
                      float4 positionOS : POSITION;
                      float2 uv : TEXCOORD0;
                  };
                  struct Varyings
                  {
                      float4 positionCS : SV_POSITION;
                      float2 uv : TEXCOORD0;
                  };
                  float4 _Color;
                  sampler2D _MainTex;
                  float4 _MainTex_ST;
                  Varyings vert(Attributes v)
                  {
                      Varyings o = (Varyings)0;
                      VertexPositionInputs vertexInput = GetVertexPositionInputs(v.positionOS.xyz);
                      o.positionCS = vertexInput.positionCS;
                      o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                      return o;
                  }
                  half4 frag(Varyings i) : SV_Target
                  {
                      half4 col = tex2D(_MainTex, i.uv);
                      return lerp(col, _Color, 0.8);
                  }
                  ENDHLSL
              }
          }    
          Fallback "Custom/NewSurfaceShader"
      }
      

       继续!!