如何选择Unity 3d Shader编写语言

 我来答
aa46495086
2017-03-01 · TA获得超过250个赞
知道大有可为答主
回答量:1194
采纳率:27%
帮助的人:824万
展开全部
昨天我说过,在Unity里写shader,Cg/ HLSL是最佳选择。后来冒出了几个很有意思的观点,所以我特意查阅了一下资料再来回复。
Metal API:有人说,Metal API是iOS的未来。如果你完全不关心Android,PC,Xbox,PS等平台,那么你的确可以奉之为圭臬。反正,Unity3d 是不支持用Metal写的,而且他们说近期也没有要去支持Metal的打算。他们只支持自动编译成Metal API,但这样你能控制的就很少。因此,这不是一个Unity开发者入门的选择。

Vulkan:有人说这才是未来。大概吧。AMD开发过一个叫做Mantle 的语言,只有很少的几个游戏用过它,然后它还死了,现在有人用它搞出了这个。人们说他们从苹果公司的Metal借鉴了一些理念,用之以完善Vulkan。很显然,Vulkan是在2015年GDC公布的,但我没有在其他任何地方听说或看到。即使它真是未来,那也是一个远到不着边际的未来。Vulkan 听起来不错,像是某种方式的梦想成真,但它甚至没有发行。只有Valve公司用过它。什么?你在Valve工作?你的上司是要支持这个技术了吗?太多问题了。此外,约翰·卡马克暗示Android可能不久会有一个类似Metal API的东西,所以Android设备的GPU甚至不需要接受它。那么,当你考虑所有事情时,就是有太多的问题围绕着它,太多的未知。无论如何,它不是Unity当下的选择。
GLSL:现在你可以在Unity里写GLSL了。Unity会将这段代码编译到任何平台,虽然你可能要在PC(或任何非iOS / Apple设备)上执行“-force-opengl”,以使之正常工作。那会导致在某些显卡GPU上,Unity Profiler不能正确地执行配置。我很想知道,是否有可能解决这问题。所以,如果你用着Mac,团队里人人用着Mac,那么相信你应该使用GLSL- 绝对是明智之选。

Surface Shaders:你可以用Unity shader库做些很酷的东西,但它不一定会在移动设备上有效果。 Shader库就像一个简化的,更易于阅读的标记语言,但你失去了你手机游戏需要的控制和性能选项。鉴于大多数在中国的工作是做手游,我不推荐这样做。
Cg/HLSL:有人说,Cg是死的语言。那么,事实是,Cg和HLSL是同一个语言,只是由两个不同的公司,NVIDIA 和Microsoft分别维护。现在NIVIDIA已停止支持Cg,没有必要啊是不,反正Microsoft在维护HLSL。人们仍然使用着Cg的名字,但愿没有人对此困惑了。 Cg/ HLSL当然没有死,在跟几个大牛以及论坛老兵聊过Unity,他们都认为HLSL是Unity shader的未来,因为公司为游戏机做了很多,为3A级提升了许多。只要看看Unity5的特性,你会懂我意思了。Cg/HLSL可以被编译到你需要的任何设备,同时Unity和微软已经亲密得像兄弟一样,并且将一直亲密下去直到地老天荒。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式