Shader山下(八)片段着色器

本文介绍了Shader的两大类:表面着色器和片段着色器。片段着色器允许开发者在更低级别实现更复杂的图形效果,尽管编写起来更具挑战性,尤其适用于高效能的设备优化。
摘要由CSDN通过智能技术生成

Shader可以分为两类:

表面着色器(Surface Shader) - 为你做了大部分的工作,只需要简单的技巧即可实现很多不错的效果,但也显示了部分功能。

片段着色器(Fragment Shader) - 可以做的事情更多,但是也比较难写。使用片段着色器的主要目的是可以在比较低的层级上进行更复杂(或者针对目标设备更高效)的开发。

一个最简单的片段着色器:
Shader "Custom/Frag/Fragment" {
	Properties {
		_MainTex ("Albedo (RGB)", 2D) = "white" {}
		_MainTint ("Color", Color) = (1,1,1,1)
	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200

		Pass
		{
			CGPROGRAM
			#pragma vertex vert_img                             //1
			#pragma fragment frag                               //2
			#pragma fragmentoption ARB_precision_hint_fastest   //3
			#include "UnityCG.cginc"                            //4

			uniform sampler2D _MainTex;
			fixed4 _MainTint;

			fixed4 frag(v2f_img i) : COLOR                      //5
			{
				fixed4 renderTex = tex2D(_MainTex, i.uv) * _MainTint;
				return renderTex;
			}
			ENDCG
		}
	}
	FallBack "Diffuse"
}

用注释加了编号,方便讲解。
1处表示使用了方法名为vert_img的顶点着色器,我们可以在UnityCG.cginc文件中找到这个方法:
v2f_img vert_img( appdata_img v )
{
	v2f_img o;
	o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
	o.uv = v.texcoord
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值