【《Unity Shader入门精要》 提炼总结】(四)第四章·SurfaceShader&Vertex/Fragment Shader&Fixed Function Shader使用场景&优劣

 

 

 

本文由@唐三十胖子出品,转载请注明出处。  
文章链接:https://blog.csdn.net/iceSony/article/details/84259046

 

 

 

这篇文章将总结和提炼《Unity Shader入门精要》的第三章“ShaderLab基础”的内容。

通过这篇文章,你可以知道

1)SurfaceShader表面着色器介绍

2)Vertex/Fragment Shader顶点/片元着色器介绍

3)Fixed Function Shader固定功能着色器介绍

4)三种着色器对比&使用场景优劣对比

一.表面着色器Surface Shader:平庸的嫡长子

Unity自创,本质还是顶点/片元着色器

优点:代码少 缺点:渲染代价大

定义在CGPROGRAM和ENDCG之间
是什么我们不管

我们只需要知道卸载SubShader上和Pass同层级就行

二.顶点/片元着色器Vertex/Fragment Shader:能力出众的二皇子

CG/HLSL语言

优点:灵活 缺点:看起来复杂

和表面着色器比,同样写在CGPROGRAM-ENDCG中

但是处在Pass内

三.固定函数着色器Fixed Function Shader:废弃的太子

本来由于设备性能关系

只需要简单的渲染效果

优点:最简单的书写 缺点:最简单的渲染效果

四.着色器使用场景介绍&优劣对比

想和很多光打交道  点光源 平行光等等使用嫡长子

 

光照不多,如仅有平行光(事实上手游中很多没有光照),使用二皇子

事实上很多炫酷的渲染效果都是使用Vertex/Fragment Shader

 

不需要性能表现,用废弃的太子

接下来我们当然是侧重学习顶点/片元着色器

五.Unity中的Shader优劣

传统shader开发,每个着色器是一个文件,而在u3d中,一个shader中包含多种着色器

传统的shader中无法进行RenderSetup;传统shader代码复杂,比如获取模型信息,U3d中直接通过属性获取

相信你也能看出缺点

曲面细分,几何着色器我们没有介绍;为什么?因为u3d没怎么支持

 

U3d在DirectX 11平台提供支持,而在OPENGL下没有

另外一些Shader高级语法Unity也没有支持

事实上你也可以通过GLSL 开发写在GLSLPROGRAM-ENDGLSL中

但是问题就是这样子你的shader只能是Mac 或者Linux,不可以在微软大家族中使用

 

本篇不涉及:)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值