unity shader 入门之路(一)创建一个shader

您所在的位置:网站首页 顶点shader unity shader 入门之路(一)创建一个shader

unity shader 入门之路(一)创建一个shader

2024-07-11 03:35| 来源: 网络整理| 查看: 265

今天动手写第一个shader

1.取消天空盒子 为了更好地显示效果

2.创建一个shader

命名为Chapter5-SimpleShader

3.创建一个材质球

命名为SimpleShaderMat 最后共有两个

4.创建一个球体 放在视野中央 然后将shader赋予材质球 将材质球拖到球体上

5.到了写代码的时候了

Shader "Custom/Chapter5-SimpleShader" { SubShader{ pass { CGPROGRAM #pragma vertex vert #pragma fragment farg float4 vert(float4 v:POSITION) :SV_POSITION{ return mul(UNITY_MATRIX_MVP,v); } float4 farg() : SV_Target{ return fixed4(1.0,1.0,1.0,1.0); } ENDCG } } } 代码很简单,但是VS2015貌似不支持shader的编写,没有提示代码什么的,很难受。

6.保存代码后就可以看到效果了(如果你的代码写的有问题 )

报错的shader

没报错的shader

第一个shader圆满完成,接着来看看这些代码都是什么意思。

1.

#pragma vertex vert #pragma fragment farg 首先,vertex代表我们定义的顶点着色器,我们将顶点着色器代码写在这个函数里,fragment代表我们定义的片元着色器,我们将片元着色器代码写在这个函数里。

2.

float4 vert(float4 v:POSITION) :SV_POSITION{ return mul(UNITY_MATRIX_MVP,v);

这段代码是逐顶点执行的,这里的POSITION是CG/HLSL中的语义,这些将告诉unity把模型的顶点坐标填充到输入参数V中,SV_POSITION则是顶点着色器的输出是裁剪空间中的顶点坐标。

顶点着色器中只包含了一行代码,把顶点坐标从模型空间转换到裁剪空间中。

3.

float4 farg() : SV_Target{ return fixed4(1.0,1.0,1.0,1.0); frag函数并没有输出,片元着色器的代码很简单,返回了一个表示白色的fixed4类型的变量(fixed4(1.0,1.0,1.0,1.0)),(0,0,0)表示黑色,(1,1,1)表示白色。

今天到此为止。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3