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"
}
继续!!