我目前正在使用单元着色脚本在我正在使用的模型上对 Lambert 材质进行着色。我还有一个自定义着色器材质,我也想在上面使用相同的脚本,但事实证明说起来容易做起来难。我想知道是否有办法将自定义材料更改为 Lambert 材料。我做了一些寻找,似乎找不到任何东西。任何帮助将非常感激。到目前为止,这是我的代码,three_lamberton 脚本是我正在使用的脚本,它适用于我正在应用图像的对象。顶部的脚本是我用来分层图像和设置自定义着色器材质的脚本。忽略一些图像不止一次加载到材料中的事实,我目前只是作为占位符这样做。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Web GL test 2</title>
</head>
<body style="overflow: hidden; background: black;">
<div id="container">
</div>
<script src="three.min.js"></script>
<script src="OBJLoader.js"></script>
<script src="three_lambertoon_c.js"></script>
<script id="fragment_shh" type="x-shader/x-fragment">
#ifdef GL_ES
precision highp float;
#endif
uniform sampler2D tOne;
uniform sampler2D tSec;
uniform sampler2D tThree;
uniform sampler2D tFour;
uniform sampler2D tFive;
uniform sampler2D tSix;
varying vec2 vUv;
void main(void)
{
vec3 c;
vec4 Ca = texture2D(tOne, vUv);
vec4 Cb = texture2D(tSec, vUv);
vec4 Cc = texture2D(tThree, vUv);
vec4 Cd = texture2D(tFour, vUv);
vec4 Ce = texture2D(tFive, vUv);
vec4 Cf = texture2D(tSix, vUv);
c = Ca.rgb * Ca.a + Cb.rgb * Cb.a + Cc.rgb * Cc.a + Cd.rgb * Cd.a
+ Ce.rgb * Ce.a + Cf.rgb * Cf.a * (1.0 - Ca.a - Cb.a - Cc.a - Cd.a - Ce.a);
gl_FragColor= vec4(c, 1.0);
}
</script>
<script id="vertex_shh" type="x-shader/x-vertex">
varying vec2 vUv;
void main()
{
vUv = uv;
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
gl_Position = projectionMatrix * mvPosition;
}
</script>