随笔-11  评论-26  文章-0  trackbacks-0
最早接触的材质管理是quake中的shader脚本。引擎可以针对脚本中设置的渲染状态对处理一个指定的pass,类似于现在的FX结构,极大地增加了渲染的灵活性。虽然现在仍有许多引擎沿用着此方法,但随着游戏产业的流水线化的发展,脚本显然跟不上变化的需求。因为我们不可能为每个游戏写上几十个脚本,而且最可怕的是你写出来的效果并不是美工想要的。当然,我们不可能要求美工去学习ASMHLSL。理想的方案是用一个中间层,帮助我们把美工对材质的描述转换为引擎实际使用的shader

下面是我在网上找到的一些材质编辑器的截图


[comment] 这个比较简单,只是编辑每个stage的纹理以及纹理坐标



[comment]把material和mesh editor集成在shader builder中,主要是为了把两者关联起来,虽然在工具层的包含关系上有点奇怪。另外可以发现它允许对多个通道进行编辑。

写过
shader的朋友肯定一眼就能看出其中表达的意思。对于美工来说,这些图示也并不难理解(这正是我们想要的:)。两个编辑器的共通点就是结点化。所有效果全都是通过结点的连接来实现的。对于程序员来说,需要做的就是把shader功能模块化,同时,把常用通道以模板形式开放出来。结点连接的工作就全部交给美工去做了,所以最终的效果是取决于美工。新效果的添加也很方便,只要对应地追加一个shader模块和结点即可。

再贴一张unreal的材质编辑器截图

[comment]这个就比较BT了,它对编辑者基本没有什么限制(只要shader编译能通过),灵活性就没得说了

posted on 2007-01-31 23:07 chaz 阅读(530) 评论(4)  编辑 收藏 所属分类: 开发随笔

评论:
#1楼  2007-02-13 21:34 | Pointer      
很不错啊,其实让美术来自由发挥的最可怕的地方是。。。效率。。。
所以我还是比较倾向于美术和程序坐在一起,讨论并实现一个效果。
  回复  引用  查看    
#2楼  2007-02-13 23:30 | chaz      
说得没错,一般我们会以shader指令数来做限制,或者程序建模板,美工填数据。编辑器的根本目的是避免Hardcode..
  回复  引用  查看    
#3楼  2007-02-14 00:11 | Pointer      
我们现在基本就是hardcode,表鄙视我,哈哈哈哈。

不过看上面UE的MaterialEditor,似乎也就是让美工指定一下Sampler,Decalmap,Glossmap,Normalmap之类的,然后关联一下Heightmap的Channel。BumpOffset大概就是一个Parallaxmapping之类的渲染Pass吧,
不知道多Pass之间组合起来会是个什么效果。。。

其实Hardcode也有好处,可以利用3DSMax的自定义材质功能让Max充当MaterialEditor,美工只需要在MAX里预览模型并填写一些参数,然后轻轻点击导出,就可以在游戏中得到和MAX中一样的效果了。对于需要对照效果反复修改的模型来说还是很方便的。
  回复  引用  查看    
#4楼 [楼主] 2007-02-14 11:09 | chaz      
呵呵,正如你所说的PASS间组合,其实结点之间还是可以通过相互连接来达到最终的效果的,换句话说,sample和通道并没有直接关系。
UE3里有的材质可以连成蜘蛛网那样的- -b

对于render来说,不用再去管那些琐碎的shader,把ME compile的文件当资源交给render去处理就完了。
其实ME就是一个shadersystem拉,可以把他看作render的sub-system :)

  回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-02-04 00:22 编辑过


相关链接: