基础的Unity URP Shader
Posted 曾胖神父
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础的Unity URP Shader相关的知识,希望对你有一定的参考价值。
Shader "BaseURPShader"
Properties
_Color("Color",COLOR)=(1,1,1,1)
_MainTex("MainTex",2D)="white"
SubShader
Tags
"RenderPipeline"="UniversalPipeline"//渲染管线标记,标注当前SubShader是给URP渲染管线使用的
"RenderType"="Opaque"//渲染方式为不透明
"UniversalMaterialType" = "Unlit"
"Queue"="Geometry"
Pass //主Pass
Name "Pass"
Tags
// LightMode: <None>
Cull Back
Blend One Zero
ZTest LEqual
ZWrite On
HLSLPROGRAM
#pragma target 4.5
//只在以下平台进行编译
//#pragma exclude_renderers gles gles3 glcore
//定义顶点着色器
#pragma vertex vert
//定义片段着色器
#pragma fragment frag
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
//顶点着色器的输入(模型的数据信息)类似于appdate
struct Attributes
float3 positionOS : POSITION;
float2 uv:TEXCOORD;
;
//顶点着色器输出
struct Varyings
float4 positionCS : SV_POSITION;
float2 uv:TEXCOORD0;
;
CBUFFER_START(UnityPerMaterial)
half4 _Color;
float4 _MainTex_ST;
TEXTURE2D(_MainTex);//纹理的定义,如果是编译到GLES2.0平台,则相当于sampler2D _MainTex;否则就相当于Texture2D _MainTex
SAMPLER(sampler_MainTex);//采样器的定义,如果是编译到GLES2.0平台,就相当于空,否则就相当于SamplerState sampler_MainTex
// SAMPLER(SamplerState_Point_Repeat);根据传入的名称选择采样模式,比如该传入的名称代表贴图采样的Wrap Mode为Repeat,Fiter Mode为Point
CBUFFER_END
//v2f vert(appdata v)
//顶点着色器
Varyings vert(Attributes v)
Varyings o = (Varyings)0;
float3 positionWS=TransformObjectToWorld(v.positionOS);
o.positionCS=TransformWorldToHClip(positionWS);
o.uv=TRANSFORM_TEX(v.uv,_MainTex);
return o;
//fixed4 frag(v2f i):SV_TARGET
//片断着色器
half4 frag(Varyings i) : SV_TARGET
half4 c;
half4 mainTex=SAMPLE_TEXTURE2D(_MainTex,sampler_MainTex,i.uv);
c=mainTex*_Color;
return c;
ENDHLSL
FallBack "Hidden/Shader Graph/FallbackError"
以上是关于基础的Unity URP Shader的主要内容,如果未能解决你的问题,请参考以下文章
Unity商业Shader渲染-URP-基于AmplifyShader Editor
Unity Build-in管线shader移植到URP管线下