Godot - 纠正一篇网友shader教学中的问题

来源

Godot Shader 入门:做一套像素文字 Shader
http://ju.outofmemory.cn/entry/373904?from=singlemessage&isappinstalled=0
作者:indienova 独立游戏新闻,评测,开发教学

我用了谷歌的Preahvihear字体

原文制作像素字的代码中用了if,在shader中遵循几个原则:

  • 能用内置函数就不用自定义函数
  • 能不用循环就不用循环
  • 使用step和smoothStep 替代if条件,速度要快上不少

原文代码

void fragment(){
    COLOR=texture(TEXTURE,UV);
    if(COLOR.a<0.5){
        COLOR.a=0.0; 
    }else{
        COLOR.a=1.0;
    }
}

建议用法

void fragment(){
    vec4 cc = texture(TEXTURE,UV);
    cc.a = step(.5,cc.a);
    COLOR = cc;
}

step,将当前数值按照第一个参数进行两极分化,小于0.5的值变为0,大于0.5的值变为1
开启像素效果



普通放大效果


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容