自己做企业网站服务器,网站新闻页面无法翻页,wordpress手机浏览,wordpress去主题插件提示目录
一、本节介绍
1 上集回顾
2 本节介绍
二、shader的基本格式
1 SubShader块
2 通道#xff08;Pass#xff09;
3 CG语言
4 语义
5 引入
三、下集介绍 一、本节介绍
1 上集回顾
上节课我们学到#xff0c;空的shader是玫红色的,英文里叫pink#xff08;我实…目录
一、本节介绍
1 上集回顾
2 本节介绍
二、shader的基本格式
1 SubShader块
2 通道Pass
3 CG语言
4 语义
5 引入
三、下集介绍 一、本节介绍
1 上集回顾
上节课我们学到空的shader是玫红色的,英文里叫pink我实在不想承认它是粉红色
2 本节介绍
这节课我们要学习shader简单的语法格式。
二、shader的基本格式
1 SubShader块
shader里面可以放很多其他的东西每个东西我们都要给分一个块同时我们必须有的一个块是具体影响shader行为的块它的名字叫SubShader。
代码如下
Shader Custom/001
{
SubShader{ }
}
2 通道Pass
有时候同一个物体我希望它一会变成水的状态一会变成石头的状态。那么这部分内容我们必须写在同一个SubShader块中但又要把他们区分开。所以出现了一个语法叫Pass。
一个SubShader里可以写很多Pass一个水Pass一个石头Pass等等。
代码如下
Shader Custom/001
{
SubShader{//假如这里写水的渲染pass{ }//假如这里写石头的渲染pass{ }}
}
3 CG语言
上文说过我们用的是unity给我们升级过的语言shader原本的语言之一是CG语言CGPROGRAM我们要告诉一下unity后面会出现CG语言让它能认识。
代码如下
Shader Custom/001
{SubShader{pass{CGPROGRAM //开始CG语言了ENDCG //CG语言结束了}}
}
4 语义
之前提过我们并没有完全接手所有的shader过程只是参与一部分那么如何正确的“交接”就是一个很重要的事情。语义的功能就是负责“交接”。
因此shader规定了一些词汇可让你获得一些信息也可以去传递一些信息这些词汇就叫做语义他的用法就是语义词汇。
例
需求我希望拿到现在shader所在模型的每个顶点的位置。
语义Shader说只要你用了POSITION就能拿到这个数据。
声明因为POSITION的数据是Vector4所以我们也需要一个Vector4来接应这个数据。
CG语言在CG语言里Vector2的表达是float2Vector3的表达是float3Vector4的表达是float4所以我们声明的是float4
备注这里只是写法不一样本质就是四个数就像西红柿和番茄一样地域不同叫法不一样。
代码如下
//声明变量float4 //变量名称v //POSITION就是语义你只要POSITION就能获取到模型的顶点
float4 v:POSITION
5 引入
写代码大多需要引入例如C#里的using UnityEngine;
在shader里引入是#pragma
不同点shader引入后需要给引入的内容起个名字下面案例起名叫vert
代码如下 #pragma vertex vert
和C#一样引用之后就可以用引入内容里有的方法在这里当你引入了顶点着色器并起了名你就可以用顶点着色器的方法了。
顶点着色器的方法代码如下 #pragma vertex vertfloat4 vert(){return //一个float4}
三、下集介绍
本节课了解了Shader的基本语法。
下节课我们会利用学会的语法讲一个简单的干预颜色案例。