shader编程使用的语言

zq1564171310 2015-09-24 10:41:42
新手,最近在看shader这章,有几点疑惑
1.shader编程到底使用的是那种语言,GLSL?HLSL?CG?这三种语言来历什么的不需要解释,看了好多遍了,只是想知道unity中使用的是哪种。
2.几个术语之间的关系不懂,shaderLab到底是什么,有的书上说是语言,但真正将语法的时候却在将CG,那么CG和shaderLab到底是怎么回事?
3.cg语言最新版本为3.1,当前已不再被积极开发与支持是什么意思?这门语言完蛋了?那还有必要学么?
...全文
1509 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
华美黄昏 2019-01-25
  • 打赏
  • 举报
回复
不错,学习了
zq1564171310 2015-09-24
  • 打赏
  • 举报
回复
引用 2 楼 YuiUUU 的回复:
补充一下, cg是语言 ,shardLab是unity 特有的着色器的一种封装 , shardLab 用CG 来写 。有可能有不对的地方,因为我也是初学者
感谢你的回答,让我有了一定的了解。能追问一个问题么:既然unity 做了封装,那应该提供了相应的封装之后的语法,还是继续沿用CG语法?那么我想学ShaderLab,到底要学的是什么,CG?ShaderLab?如果是ShaderLab能否提供一些资料,网上的资料长篇大论的将CG,讲的我到现在不知道ShaderLab是个什么玩意。
YuiUUU 2015-09-24
  • 打赏
  • 举报
回复
补充一下, cg是语言 ,shardLab是unity 特有的着色器的一种封装 , shardLab 用CG 来写 。有可能有不对的地方,因为我也是初学者
YuiUUU 2015-09-24
  • 打赏
  • 举报
回复 1
unity 用CG 来写的,你不用纠结这个 平时我们写着色器都是 顶点着色器 + 片段着色器 这种直接方式 我假设叫做原生CG着色器,着色器书本上也都是这么介绍的,但是问题,这两种方式实现一些效果例如反光,例如模糊都还可以 ,而且在UNITY 完全可以使用,但问题来了,你自己写的一个着色器举例来说,一个红色的盒子,你写好了没问题可以用,但是你放到场景中不会有阴影,不会受到灯光影响 ,这些你也完全可以继续写,但是很复杂,特别是阴影,即使你觉得复杂也没问题,你也可以写,你写的阴影算法能用,也就是说你的红色的盒子有投射阴影的功能了,但你放到场景中还是没有阴影,为什么,因为你的地面的着色器是unity自带的,不是你写的,他是接收阴影的物体,也就是说unity 自带的默认着色器,和你的着色器之间不能相互投影 ,而且还没法解决,至少简单的方式没有,除非你整个场景全部都用你自己写的 所以就有了surf 着色器 也就是 shardLab ,说白了他会自动生成和unity 默认着色器一样的阴影算法,你写的红色盒子就能和unity 自带的东西进行投影了,而且还有光照可以直接选择,漫反射等等. 如果你有兴趣去了解的话你就会知道 shardLab 写出来的东西,会被自动转成CG着色器 就相当于封装了一层东西,让你更方便使用罢了 也就是说说到底着色器还是 CG原生的着色器再工作,只是写的时候用unity的方式去写(表面着色器),它自动帮你增加其余繁琐的部分,具体细节你自己去研究,我也只知道这么多了 第三个问题我不知道,但是我想说的是,稍微学一段时间你就会知道了,这个东西用什么语言真不重要, 但是你学CG,或是其他语言 学的再好,没有经验没有算法什么都没有,你要是个数学家或者是图形学专家,你随便学两天就能写出好东西,因为CG其实语言上包含的东西很少,又不像C++什么的,只要会逻辑,剩下的全部是你绞尽脑汁用数学公式来达成效果了
YuiUUU 2015-09-24
  • 打赏
  • 举报
回复 1
我们这个版不是有个版主 candycat吗..那个妹子的博客写的挺好的,最主要是不会很晦涩...去看看吧 语法都是一样的就跟C语言差不多 .. 这种东西差别主要在于 有一些规则要遵循,例如 你写普通的CG 片段着色器,也就是像素着色器,最后要返回的是一个颜色,无非就是RGBA 的浮点型 ,你写表面着色器(unity) 他需要你去填充它定义的一个结构体, 这个结构体有颜色,有透明度,有法线,unity 就会自动生成默认效果 , 还可以直接出来法线贴图的功能,只需要设置法线即可 如果你用CG 你得用各种东西算切空间,然后拿法线,然后解析巴拉巴拉 ..

2,543

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧