相关疑难解决方法(0)

复制MeshLambertMaterial使用ShaderMaterial忽略纹理

我注意到THREE.js在内部使用着色器来创建核心材质"例如MeshLambertMaterial",所以我决定将Lambert着色器从Three.js代码复制到一个新的着色器中并在其上构建.

这是我得到的代码(忠实地从Three.js r66复制)

THREE.MyShader = {

uniforms: THREE.UniformsUtils.merge( [
    THREE.UniformsLib[ "common" ],
    THREE.UniformsLib[ "fog" ],
    THREE.UniformsLib[ "lights" ],
    THREE.UniformsLib[ "shadowmap" ],
    {
        "ambient"  : { type: "c", value: new THREE.Color( 0xffffff ) },
        "emissive" : { type: "c", value: new THREE.Color( 0x000000 ) },
        "wrapRGB"  : { type: "v3", value: new THREE.Vector3( 1, 1, 1 ) }
    }
]),

vertexShader: [

    "#define LAMBERT",

    "varying vec3 vLightFront;",

    "#ifdef DOUBLE_SIDED",

        "varying vec3 vLightBack;",

    "#endif",

    THREE.ShaderChunk[ "map_pars_vertex" ],
    THREE.ShaderChunk[ "lightmap_pars_vertex" ],
    THREE.ShaderChunk[ "envmap_pars_vertex" …
Run Code Online (Sandbox Code Playgroud)

javascript shader opengl-es webgl three.js

8
推荐指数
1
解决办法
3820
查看次数

扩展-THREE.MeshBasicMaterial

我希望制作 THREE.MeshBasicMaterial 的副本,并基于它创建我自己的修改材质。我需要稍微编辑一下着色器,并添加一些制服(但我可以处理这个)。

首先,我想让材质像 MeshBasicMaterial 一样工作,并从那里获取东西。

这是我糟糕的尝试(我开始的地方),它不起作用: https ://gist.github.com/karimbeyrouti/80c00a6b3731f52fe173

如何在 Threejs 中创建基于 MeshBasicMaterial 的新材质?

three.js

2
推荐指数
1
解决办法
2563
查看次数

标签 统计

three.js ×2

javascript ×1

opengl-es ×1

shader ×1

webgl ×1