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"
}