妖兽啦,我在shader里打log啦!

我不管你信不信,我反正是star了

在需要的shader里 include一下这个shaderlog.chunk。然后照着示例的这种方式在片元着色器中写代码就行了。
需要设置iResolution,在shadertoy代码里表示屏幕分辨率,但是在这里应该用图片尺寸。简单测试直接写死即可。
_CurPos是用uv乘以iResolution计算出的当前片元坐标,照着示例赋值一下。
setCursor是设置光标起始位置。

然后随便自定义一个变量 ,加上你要写的字符的值:
t += char(字符数据变量);
t > 0表示是要显示的像素点

另外还有print_int print_float函数,用于输出显示数值
shaderlog.chunk里还有两个用于控制数值位数和浮点数精度的宏,可以调节使用

:ox::beer:!!!

牛皮 :call_me_hand: :call_me_hand: :call_me_hand:

顶顶顶…

绿哥牛逼啊

战略mark一下.
这两天在搞shader.
一直苦恼找不到log打印.

吊炸天~~

wdnmd,天下苦shader久矣,lz牛逼!!!

好文,马一个

mark 一下下

还不错,赞一个

image

image

setCursor 用于换行和间隔。

1赞

好文,赞一个!

mark mark

mark!!

妖兽了,以前小霸王上的游戏难道都是这么开发的 :rofl:
https://www.shadertoy.com/view/Mlt3Wn

2赞

以前的游戏没有那么大的内存,还真的有可能是

assets.zip (9.4 KB) 花了点时间看懂了,然后这里有个bug ,苹果手机上会显示异常,做了一下修改,然后加上了注释

    float extract_bit(float n, float b)

    {  

        //限制范围 这里修改成0.0,不然苹果手机上会有显示问题

        b = clamp(b,0.0,24.0);

        //这里就是计算二进制某位上是0还是1,用 十进制值 / (2的某位幂次方),结果再%2返回最终值是0还是1

        //例如 9 的二进制是 1001 ,以下伪代码

        // floor(9 / pow(2,3)) % 2 ---- > 1

        // floor(9 / pow(2,2)) % 2 ---- > 0

        // floor(9 / pow(2,1)) % 2 ---- > 0

        // floor(9 / pow(2,0)) % 2 ---- > 1

        return floor(mod(floor(n / pow(2.0,floor(b))),2.0));  

    }

然后把材质也改成2D材质,方便浏览器上也能看到效果

image

3.8.0版本创建个空项目,把附件文件替换assets整个文件夹就好

2赞