• OpenGL ES视频特效开发参考Shadertoy参数详解参考Godot文档


    今天一个大厂的学员过来问shadertoy上一些参数的问题,因为我之前用过一段时间Godot引擎,

    我清晰记得Godot官方文档有明确的解释,所以整理下发给做特效的同学。

    Shadertoy是一个网站,它方便用户编写片段着色器并创造出纯粹的魔法。

    Shadertoy不会给用户完全控制着色器的权力。它处理所有的输入和uniform,并且只允许用户编写片段着色器。

    类型

    Shadertoy使用webgl规范,因此它运行的是稍微不同版本的GLSL。然而,它仍然有常规的类型,包括常量和宏定义。

    mainImage

    Shadertoy着色器的主入口点是mainImage函数。mainImage函数有两个参数,fragColor和fragCoord,分别对应于Godot中的COLOR和FRAGCOORD。在Godot中,这些参数会自动处理,所以您不需要自己将它们作为参数包含进去。将mainImage函数中的任何内容复制到转换到Godot时的fragment函数中即可。

    变量

    为了使编写片段着色器简单明了,Shadertoy会自动处理从主程序传递给片段着色器的大量有用信息。其中一些在Godot中没有对应项,因为Godot选择默认不提供它们。这是可以接受的,因为Godot提供了创建自定义uniform的功能。对于列出了"Provide with Uniform"作为等效项的变量,用户需要自己创建该uniform。描述会为读者提供一些关于可以传递给uniform的替代项的提示。

    变量类型等效项描述

    fragColor

    out vec4

    COLOR

    每个像素的输出颜色。

    fragCoord

    vec2

    FRAGCOORD.xy

    适用于全屏四边形。对于较小的四边形,请使用UV。

    iResolution

    vec3

    1.0 / SCREEN_PIXEL_SIZE

    视口的分辨率,也可以手动传递。

    iTime

    float

    TIME

    着色器开始运行以来的时间。

    iTimeDelta

    float

    Provide with Uniform

    渲染上一帧所用的时间。

    iFrame

    float

    Provide with Uniform

    帧编号。

    iChannelTime[4]

    float

    Provide with Uniform

    特定纹理开始运行以来的时间。

    iMouse

    vec4

    Provide with Uniform

    鼠标位置的像素坐标

    iDate

    vec4

    Provide with Uniform

    当前日期,以秒为单位。

    iChannelResolution[4]

    vec3

    1.0 / TEXTURE_PIXEL_SIZE

    特定纹理的分辨率。

    iChanneli

    Sampler2D

    TEXTURE

    Godot仅提供一个内置纹理;用户可以创建更多。

    坐标
    fragCoord与GLSL中的gl_FragCoord和Godot中的FRAGCOORD行为相同。

     

  • 相关阅读:
    【数据结构】——排序
    在windows服务器上部署一个单机项目以及前后端分离项目
    Direct3D模板缓存
    【Netty】七、Netty自定义编码和解码器
    KDD2022 Learning Backward Compatible Embeddings【个人笔记】
    Power BI依据列中值的范围不同计算公式增加一列
    idea一些debug技巧
    图解设计模式:身份认证场景的应用
    练习4
    jxTMS设计思想之权限
  • 原文地址:https://blog.csdn.net/chenchao_shenzhen/article/details/132563308