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 vert
float4 vert()
{
return //一个float4
}
6.下集介绍
下集我们会利用学会的语法,讲一个简单的干预颜色案例?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!