小编ske*_*ogy的帖子

让阴影在Three.js自定义着色器中工作

我试图让阴影在Three.js中的自定义着色器中工作.我试图将这些添加到我的代码中:

制服:

THREE.UniformsLib["shadowmap"]
Run Code Online (Sandbox Code Playgroud)

在片段着色器中:

THREE.ShaderChunk["shadowmap_pars_fragment"]
THREE.ShaderChunk["shadowmap_fragment"]
Run Code Online (Sandbox Code Playgroud)

在顶点着色器中:

THREE.ShaderChunk["shadowmap_pars_vertex"]
THREE.ShaderChunk["shadowmap_vertex"]
Run Code Online (Sandbox Code Playgroud)

哪个有效.对象可以接收阴影.

但是,它无法投射阴影.有谁知道还需要其他代码?

shader shadows three.js

5
推荐指数
1
解决办法
1575
查看次数

GLSL 通道选择

我有一个 GLSL 着色器,它从输入纹理的通道之一(例如 R)读取数据,然后写入输出纹理中的同一通道。该通道必须由用户选择。

我现在能想到的是只使用 int 制服和大量的 if 语句:

uniform sampler2D uTexture;
uniform int uChannelId;
varying vec2 vUv;

void main() {

    //read in data from texture
    vec4 t = texture2D(uTexture, vUv);
    float data;
    if (uChannelId == 0) {
        data = t.r;
    } else if (uChannelId == 1) {
        data = t.g;
    } else if (uChannelId == 2) {
        data = t.b;
    } else {
        data = t.a;
    }

    //process the data...
    float result = data * 2;  //for example

    //write …
Run Code Online (Sandbox Code Playgroud)

shader glsl

3
推荐指数
1
解决办法
2308
查看次数

标签 统计

shader ×2

glsl ×1

shadows ×1

three.js ×1