UnityShader快速入门(2)UnityShader的形式

本文是UnityShader快速入门的第二部分,详细介绍了顶点/片元着色器的工作原理和编写方式,包括顶点着色器处理模型顶点坐标转换,片元着色器处理像素颜色。同时,对比了表面着色器的特性和使用场景,强调了性能优化和着色器选择的考量因素。
摘要由CSDN通过智能技术生成

UnityShader快速入门(2)UnityShader的形式

1. 简介

UnityShader最重要的任务是:指定各种着色器所需的代码

而代码的编写形式有以下三种

2. 长子:顶点/片元着色器

在Unity中我们可以使用CG/HLSL语言来编写顶点/片元着色器(Vertex/Fragment Shader)
它更复杂也更灵活。

它写在Pass语句块内,格式如下

Shader "Unlit/MyFirstShader"
{
	Properties
	{
		_Color("Color", Color) = (1,1,1,1)
	}
	
	SubShader
	{
		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag

			ENDCG
		}
	}	
}

#pragma是Unity内置的编绎指令用的命令
在Pass中我们就利用此命令来声明所需要的顶点着色器与片元着色器。

  • #pragma vertexName
    定义顶点着色器为*name,*通常情况下会起名为vert。

  • #pragma fragmentName
    定义片元着色器为*name,*通常情况下会起名为frag。

2.1 顶点着色器

顶点着色器就是处理顶点的着色器,每个顶点都会执行一次顶点着色器。

例如:

	float4 vert(float4 vertex:POSITION):SV_POSITION
	{
		return UnityObjectToClipPos(vertex);
	}

在这里插入图片描述

首先呢,我们先来解释下顶点这个函数的结构。

  1. 顶点着色器函数的名称,在上面我们已经指定了顶点着色器的名称就是vert,所以这里我们必须要用vert作为名称。
  2. 其中float4 vertex是我们自己定义的一个四维向量,名字叫vertex(名字我们可以随便起),仅仅定义一个四维向量并不能使它拥有我们模型的顶点信息,所以这里我们需要为它指定一个语
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值