V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Juszoe
V2EX  ›  程序员

请教一段 GLSL 代码

  •  
  •   Juszoe · 2020-02-01 22:32:10 +08:00 · 2151 次点击
    这是一个创建于 1761 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚学 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 条回复    2020-02-02 00:17:23 +08:00
    gggxxxx
        1
    gggxxxx  
       2020-02-01 22:37:05 +08:00   ❤️ 1
    这个做法应该是把部分 glsl 代码放在一个文件里,编译时会和其他部分代码组合后再编译。
    nightwitch
        2
    nightwitch  
       2020-02-01 22:55:03 +08:00   ❤️ 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  
       2020-02-01 23:00:18 +08:00 via Android
    卧槽,这是个好东西。。明天给我的 mpv 装上。。。
    感谢。
    Juszoe
        4
    Juszoe  
    OP
       2020-02-01 23:00:52 +08:00
    @gggxxxx #1
    @nightwitch #2
    感谢,原来还会重新 parse
    MCVector
        5
    MCVector  
       2020-02-02 00:17:23 +08:00 via Android
    这个应该是接在某个重新命名了 glsl 内置变量和函数的文件后面的。
    不知道这个是什么 colospace, 但是 getLum 在每个 channel 上的 weight 好像不太对。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5417 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 07:17 · PVG 15:17 · LAX 23:17 · JFK 02:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.