• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Juszoe
V2EX  ›  程序员

请教一段 GLSL 代码

  •  
  •   Juszoe · Feb 1, 2020 · 2519 views
    This topic created in 2293 days ago, the information mentioned may be changed or developed.

    刚学 OpenGL,如下是一段 GLSL 的代码,但是和网上搜到的 GLSL 代码结构完全不一样,请问这是什么写法?

    //!HOOK SCALED
    //!BIND HOOKED
    //!BIND POSTKERNEL
    //!SAVE POSTKERNEL
    //!DESC Anime4K-ComputeLuma-v1.0RC
    
    float getLum(vec4 rgb) {
    	return (rgb.r + rgb.r + rgb.g + rgb.g + rgb.g + rgb.b) / 6.0;
    }
    
    vec4 hook() { //Save lum on OUTPUT
    	vec4 rgb = HOOKED_tex(HOOKED_pos);
    	float lum = getLum(rgb);
        return vec4(lum);
    }
    

    我所知道的 GLSL 需要顶点着色器和片段着色器,并且以 void main 函数起始。这段代码仅一个文件,无 main 函数,并且定义了多个hook函数,是什么意思呢?

    完整代码出处 Anime4K

    5 replies    2020-02-02 00:17:23 +08:00
    gggxxxx
        1
    gggxxxx  
       Feb 1, 2020   ❤️ 1
    这个做法应该是把部分 glsl 代码放在一个文件里,编译时会和其他部分代码组合后再编译。
    nightwitch
        2
    nightwitch  
       Feb 1, 2020   ❤️ 2
    https://github.com/bloc97/Anime4K/blob/master/GLSL_Instructions.md
    你的这段 GLSL 是给播放器用的,播放器会重新 parse 这段 GLSL
    具体的说明在这里 https://mpv.io/manual/master/#options-glsl-shader
    kokutou
        3
    kokutou  
       Feb 1, 2020 via Android
    卧槽,这是个好东西。。明天给我的 mpv 装上。。。
    感谢。
    Juszoe
        4
    Juszoe  
    OP
       Feb 1, 2020
    @gggxxxx #1
    @nightwitch #2
    感谢,原来还会重新 parse
    MCVector
        5
    MCVector  
       Feb 2, 2020 via Android
    这个应该是接在某个重新命名了 glsl 内置变量和函数的文件后面的。
    不知道这个是什么 colospace, 但是 getLum 在每个 channel 上的 weight 好像不太对。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1251 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 23:42 · PVG 07:42 · LAX 16:42 · JFK 19:42
    ♥ Do have faith in what you're doing.