上篇笔记《Godot Shader特效:3D描边(outline)效果 原理篇》介绍了Godot实现3D描边的原理,该文中是用Godot自带的SpatialShader通过调整参数实现的,由于这个效果在3D游戏中还是很常用的,所以干脆自己写了一个专用Shader,非常简单。把它添加到材质上并作为一个Next Pass,就可以实现描边了。
shader_type spatial;
render_mode cull_front,unshaded;
uniform vec4 color : hint_color = vec4(1.0,0.0,0.0,1.0);
uniform float grow = 0.05;
void vertex() {
VERTEX+=NORMAL*grow;
}
void fragment() {
ALBEDO = color.rgb;
}
效果图