Unity Shader

零散的知识

普通纹理绘制

在 CG 语法中,当属性中定义了一个纹理类型的变量

1
2
3
Properties {
_MainTex("Main Texture", 2D) = "white" {}
}

想要在 CGPROGRAM 中引用这个纹理,就需要声明一个采样器:

1
sampler2D _MainTex;

而在 HLSL 中,sampler2D这个对象被拆分为两部分,即纹理对象和采样器,需要同时声明两个变量来保存它们:

1
2
3
4
5
6
7
/*
声明主纹理并且为主纹理设置一个采样器(这是一种固定的格式)
主纹理的声明同属性的声明,注意类型为 TEXTURE2D,采样通过 SAMPLER 来定义,括号中的名字为采样器的变量名,
变量名为 <sampler_纹理名 >,由于这里的纹理名为 MainTex,所以采样器为 sampler_MainTex
*/
TEXTURE2D(_MainTex);
SAMPLER(sampler_MainTex);

之后需要通过采样器函数 SAMPLE_TEXTURE2D 来对它们进行采样:

1
half4 albedo = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv);

Unity Shader
https://silhouettesforyou.github.io/2022/11/25/c639d5d56c8f/
Author
Xiaoming
Posted on
November 25, 2022
Licensed under