Альфа-канал видео в тройках - PullRequest
0 голосов
/ 26 февраля 2020

Я начинающий шейдер и пытаюсь отобразить видео mp4 в трех js с альфа-каналом (верхняя половина - видео, нижняя половина - альфа) * ​​1001 *

Я попробовал пользовательский шейдер (см. Ниже) , Это работает, но ... делает прозрачными также и объекты. Я попытался сбросить, основываясь на альфа-значении, но это делает рендеринг не таким плавным.

Есть идеи?

Спасибо,

Микаэль

THREE.ShaderLib['custom'] = {
                vertexShader: [
                    "varying vec2 vUv;",
                    "void main() {",
                        "vUv            =   uv;",
                        "gl_PointSize   =   8.0;",
                        "gl_Position    =   projectionMatrix * modelViewMatrix * vec4(position, 1.0);",
                    "}",
                ].join("\n"),

                fragmentShader: [
                    "varying vec2 vUv;",
                    "uniform sampler2D texture;",
                    "void main() {",
                    "float v=vUv.y*0.5;",
                    "vec4 alpha=texture2D(texture, vec2(vUv.x,v));",
                    "vec4 result = texture2D(texture, vec2(vUv.x,0.5+v));",
                    "result.a=alpha.r;",
                    "gl_FragColor = result;",
                    "}",
                ].join("\n")
                };
...