• 【Unity Shader学习笔记】(二)最基本的顶点片段着色器


    分享一个基本的顶点片段着色器,可以实现纹理采样。目前没有加入光照和阴影效果。

    这个Shader可以作为基本的模板,进行更加细节的修改与开发。这里就简单分享一下吧。

    Shader "Unlit/unlit"
    {
    	Properties
    	{
    		//定义基本属性,可以从编辑器里面进行设置的变量
    		_MainTex ("Texture", 2D) = "white" {}
    	}
    	SubShader
    	{
    		Tags { "RenderType"="Opaque" }
    		LOD 100
    		Pass
    		{
    			//在CGPROGRAM代码块中写自己的处理过程
    			CGPROGRAM
    			//定义顶点函数和片段函数的入口分别为vert和frag
    			#pragma vertex vert
    			#pragma fragment frag
    			//包含基本的文件,里面有一些宏定义和基本函数
    			#include "UnityCG.cginc"
    			//从应用程序传入顶点函数的数据结构定义
    			struct appdata
    			{
    				float4 vertex : POSITION;
    				float2 uv : TEXCOORD0;
    			};
    			//从顶点函数传入片段函数的数据结构定义
    			struct v2f
    			{
    				float2 uv : TEXCOORD0;
    				float4 vertex : SV_POSITION;
    			};
    			//定义贴图变量
    			sampler2D _MainTex;
    			float4 _MainTex_ST;			
    			v2f vert (appdata v)
    			{
    				v2f o;
    				//将物体顶点从模型空间换到摄像机剪裁空间,也可采用简写方式——o.vertex = UnityObjectToClipPos(v.vertex);
    				o.vertex = mul(UNITY_MATRIX_MVP,v.vertex);
    				//2D UV坐标变换,也可以采用简写方式——o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    				o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw;
    				return o;
    			}			
    			fixed4 frag (v2f i) : SV_Target
    			{
    				// 进行纹理采样
    				fixed4 col = tex2D(_MainTex, i.uv);
    				return col;
    			}
    			ENDCG
    		}
    	}
    }
    直接把上面的Shader赋予一个材质,并将该材质拖到一个Cube上,再选择一张贴图。结果就是下面这个样子的。





  • 相关阅读:
    Roslyn 编译器和RyuJIT 编译器
    go语言---defer
    go语言---for
    go语言--time.After
    go语言---for range
    用gulp打包带参数资源做法与asp.net/java项目结合的自动构建方案探讨
    JQuery判断元素是否存在
    gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
    gulp同步执行任务
    gulp-rev同时将js和css文件写在一个rev-manifest.json文件里面的方式探讨
  • 原文地址:https://www.cnblogs.com/yanhuiqingkong/p/7770077.html
Copyright © 2020-2023  润新知