UnityShader快速入门(1)UnityShader的结构

UnityShader快速入门(1)UnityShader的结构

1. 简介

1.1 什么是shader

Shader的中文翻译是着色器,是一类面对GPU编程语言的总称。
Shader其实就是一段代码,这段代码的作用是告诉GPU具体怎样去绘制模型的每一个顶点的颜色以及最终每一个像素点的颜色。

更具体的讲:

  • GPU流水线上–些可高度编程的阶段,而由着色器编译出来的最终代码是会在GPU.上运行的(对于固定管线的渲染来说,着色器有时等同于–些特定的渲染设置);
  • 有一些特定类型的着色器,如顶点着色器、片元着色器等;
  • 依靠着色器我们可以控制流水线中的渲染细节,例如用顶点着色器来进行顶点变换以及传递数据,用片元着色器来进行逐像素的渲染。

1.2 shader语言有哪些

既然Shader是一段代码,那必然要用一种语言来书写它,目前主流的有三种语言:

  • 基于OpenGL
    OpenGL Shading Language,简称GLSL。
  • 基于DirectX
    High Level Shading Language,简称HLSL。
  • 基于NVIDIA
    C for Graphic,简称Cg语言。

GLSL与HLSL分别是基于OpenGL和Direct3D的接口,两者不能混用。

而Cg语言是用于图形的C语言。
这其实说明了当时设计人员的一个初衷,就是让基于图形硬件的编程变得和C语言编程一样方便,自由
正如C++和 Java的语法是基于C的,Cg语言本身也是基于C语言的。
如果您使用过C、C++、Java其中任意一个,那么Cg的语法也是比较容易掌握的。
Cg语言极力保留了C语言的大部分语义,力图让开发人员从硬件细节中解脱出来,Cg同时拥有高级语言的好处,如代码的易重用性,可读性高等。

Cg语言是Microsoft和NVIDIA相互协作在标准硬件光照语言的语法和语义上达成了一致。
所以,HLSL和Cg其实是同一种语言。

1.3 什么是UnityShader

Unity Shader严格来说并不是传统上的Shader,而是Unity自身封装后的一种便于书写的Shader,又称为ShaderLab。

在这里插入图片描述

其实在Unity中反而一切变的简单起来了,我们只需关心如何去这实现我们想要的效果就好了,其余的事情全部交给Unity来自动处理。
因为我们在Unity中编写的Shader最终会根据不同的平台来编绎成不同的着色器语言。

官方建议使用Cg/HLSL来编写ShaderLab,因为Cg/HLSL有更好的跨平台性。

2. UnityShader的结构

一段完整UnityShader代码的结构应该如下面的例子所示:

Shader "Path/ShaderName"
{
	Properties
	{
	
	}
	SubShader
	{
		Pass
		{
		
		}
	}
	FallBack "Diffuse"
	CustomEditor "EditorName"
}

从整体来看的话,大致是这样的一个框架结构:

Shader “name” { [Properties] SubShaders [FallBack] [CustomEd

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值