我目前正在尝试在 bge(blender 游戏引擎)中实现类似 tron 的游戏模型。我相信做到这一点的唯一方法是使用 GLSL 着色器。我对学习如何使用这个强大的工具非常感兴趣。我只找到了一个教程网站,即http://en.wikibooks.org/wiki/GLSL_Programming/Blender。无论我看了多少遍,我似乎都无法找到如何做我需要的 tron 外观。我想如何做到这一点是通过具有二级纹理,该纹理在材料正常渲染的地方具有黑色,在添加“光”的地方具有白色。光只是被绘制成无阴影的,带有一点绽放。
这是风格:http: //imgur.com/a/6vOwN
我似乎无法找到答案的问题是:
我如何获得材料之间的匹配颜色,以便我可以判断材料的那部分是白色(浅色)还是黑色(不透明)?
如何从材质中获取颜色,以便将其输出为无阴影或不透明?
如何添加绽放?
我当前的代码(什么都不做)如下所示:
(这只是为了展示blender使用的结构)
import bge
cont = bge.logic.getCurrentController()
VertexShader = """
varying vec4 color;
void main()
{
color = gl_MultiTexCoord0; // set the varying to this attribute
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
"""
FragmentShader = """
varying vec4 color;
void main()
{
gl_FragColor = color;
}
"""
mesh = cont.owner.meshes[0]
for mat in mesh.materials:
shader = mat.getShader()
if shader != None:
if not shader.isValid():
shader.setSource(VertexShader, FragmentShader, 1)