技术美术TA之URP最简Shader

本文介绍了如何在Unity中使用UniversalRenderPipeline(URP)进行Shader编程,涉及添加特定标签、使用HLSL语法、以及与BuildInShader的区别,如CGvsHLSL、属性结构和着色器返回类型的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~

其实和BuildIn Shader差不多,但是也有区别如下:
1.需要在Tags 内加 “RenderPipeline”=“UniversalPipeline”
2.Include 从 UnityCG.cginc 改成Packge内的文件
#include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl”
3.CG语法,变成了HLSL语法
TransformObjectToWorld
4.片断着色器返回half4,URP内没有fixed了

代码:

Shader "Custom/TA_URP/SimplestUnlitCopy"
{
    Properties {}
    SubShader
    {
        Tags
        {
            //标识SubShader URP 
            //对应C#代码的 Shader.globalRenderPipeline
            "RenderPipeline"="UniversalPipeline"
            "RenderType"="Opaque"
            "Queue"="Geometry"
        }
        Pass
        {
            Blend One Zero
            Cull Back
            ZTest LEqual
            ZWrite On

            //CGPROGRAM
            //换成 HLSL语法了
            HLSLPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            //内置渲染管线
            //#include "UnityCg.cginc"
            //URP种引用的都是 Packages里面的
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"

            //对应BuildIn的 appdata
            //顶点着色器输入(模型的数据信息)
            struct Attributes
            {
                //OS = Object Space 模型空间
                float3 positionOS : POSITION;
            };

            //对应BuildIn的v2f
            struct Varyings
            {
                float4 positionCS : SV_POSITION;
            };

            //顶点着色器
            Varyings vert(Attributes v)
            {
                Varyings o = (Varyings)0;
                float3 positionWS = TransformObjectToWorld(v.positionOS);
                o.positionCS = TransformWorldToHClip(positionWS);
                return o;
            }

            //URP下 没有 fixed了
            half4 frag(Varyings i) : SV_Target
            {
                half4 c = 1;
                return c;
            }
            ENDHLSL
        }
    }
    //URP 比较特殊,Fallback就是这个
    // 没有报错,但就是粉色
    FallBack "Hidden/Shader Graph/FallbackError"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值