美文网首页
Godot Shader特效:SpatialShader(即3D

Godot Shader特效:SpatialShader(即3D

作者: 吃烧烤的老王 | 来源:发表于2019-07-24 12:40 被阅读0次

之前写过canvas_item类型即2d Shader的溶解效果,原文请见Godot Shader特效:溶解效果(改进版)

今天来实现一个spatial即3D版的溶解效果,效果图如下:

3D溶解
原理分析:

原理上和2D是一样的,都需要一张噪声贴图来引导溶解走向。区别在于Godot的spatial着色器和canvas_item着色器一些内置参数有所不同。
canvas_item着色器中,图像的透明度由vec4类型的COLORa来控制,而spatial着色器有一个专门的内置属性ALPHA,控制贴图透明通道。

代码如下:
shader_type spatial;

uniform sampler2D noise;
uniform sampler2D tex;
uniform float dissolve : hint_range(0.0,1.0);
 
void fragment(){
    float diff = texture(noise,UV).r - dissolve;
    if(diff > 0.1){
        ALPHA = 0f;
    }
    METALLIC = 0.0;
    ROUGHNESS = 1.0;
    ALBEDO = texture(tex,UV).rgb;
}

注意:如果在代码中声明了render_mode cull_disabled;效果会变成如下的样子,即球的背面也被显示出来了,两种效果可以根据实际应用选择

没有剔除背面的效果

相关文章

网友评论

      本文标题:Godot Shader特效:SpatialShader(即3D

      本文链接:https://www.haomeiwen.com/subject/vcqxrctx.html