之前在网易实习的时候干过类似的。我简单介绍下思路,具体的你可以去看下代码,特别是MaterialTemplate.usf
这种可视化编辑器其实是根据节点和相互之间的关系,配合一个代码模板生成最终结果
节点可以分为三种:
- 输入节点,譬如参数、纹理、uv、pos等
- 输出节点,材质的各种属性,albedo\normal\specular等
- 中间节点,相当于代码里各个临时变量
节点之间支持各种运算符操作,需要注意的是节点有不同的类型(float, float4之类)。等整张图连好之后,就可以根据中间运算符的连接组合出一个大函数。
至于可视化编辑节点之类的,你可以找一些WPF控件...具体细节就母鸡了(主要这部分但是是别的同学完成的,我也不是很了解