Unity | Shader基础知识(第二集:shader语言的格式)

2023-12-13 20:04

本文主要是介绍Unity | Shader基础知识(第二集:shader语言的格式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、本节介绍

上一集,我们学到,空的shader是玫红色的,英文里叫pink(我实在不想承认它是粉红色),这一集,我们要学习第二简单的shader案例,简单对shader的颜色进行干预。

但在学习案例之前,我们会先学习一下shader的语法格式。

二、shader的基本格式

1.SubShader块

shader里面可以放很多其他的东西,每个东西我们都要给分一个块,我们今天先写具体影响shader行为的块,这部分内容规定叫做SubShader。所以需要写一个SubShader的块。

Shader "Custom/001"
{
SubShader{}
}
2.通道(Pass)

有时候,同一个物体,我希望它一会变成水一样,一会变成石头一样

我们就会需要两种shader展现在同一个物体上,所以SubShader里,可以写很多Pass,一个水Pass,一个石头Pass,可以列很多,因此在SubShader里可以不止一个Pass,我们先加一个Pass。

Shader "Custom/001"
{
SubShader{pass{}}
}
3.CG语言

前面说过,我们其实用的是unity给我们升级过的语言,shader的基础语言之一是CG语言(CGPROGRAM),我们要告诉一下unity后面会出现CG语言,让他能认识。

Shader "Custom/001"
{
SubShader{pass{CGPROGRAM    //开始CG语言了ENDCG        //CG语言结束了}}
}
4.语义

前面也说了,我们并没有完全接手所有的shader过程,只是参与一部分,那么如何正确的“交接”就是一个很重要的事情。

因此,shader规定了一些词汇,可让你获得一些信息,也可以去传递一些信息,这些词汇就叫做语义,他的用法就是:语义词汇

例:

我希望拿到现在shader所在模型的每个顶点的位置

//声明变量float4  //变量名称v  //POSITION就是语义,你只要:POSITION就能获取到模型的顶点
float4 v:POSITION

备注:float4的意思约等于Vector4,只是写法不一样,就是四个数,就像西红柿和番茄一样,地域不同叫法不一样

5.引入

写代码大多需要引入,例如:C#里的using UnityEngine;

在shader里,引入是#pragma

但不同的是,引入后需要给引入的内容起个名字,下面案例起名叫vert,

当你引入了顶点着色器并起了名,你同时会有一个顶点着色器的方法

            #pragma vertex vertfloat4 vert(){return //一个float4}
6.下集介绍

下集我们会利用学会的语法,讲一个简单的干预颜色案例 

这篇关于Unity | Shader基础知识(第二集:shader语言的格式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/489797

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作