我试图在片段着色器中生效...这就是我没有效果的结果:
这是我通过将颜色乘以渐变'
得到的结果float fragPosition = gl_FragCoord.y / screenSize.y;
outgoingLight /= fragPosition;
所以我试着分开,但颜色有点被光烧伤
float fragPosition = gl_FragCoord.y / screenSize.y;
outgoingLight /= fragPosition;
以下是我想要的颜色/渐变(如果可用,则为每个脸部):
修改
这是顶点着色器(我使用三个JS块)
precision highp float;
precision highp int;
#define PHONG
uniform float time;
attribute vec4 data;
varying vec3 vViewPosition;
#ifndef FLAT_SHADED
varying vec3 vNormal;
#endif
$common
$map_pars_vertex
$lightmap_pars_vertex
$envmap_pars_vertex
$lights_phong_pars_vertex
$color_pars_vertex
$morphtarget_pars_vertex
$skinning_pars_vertex
$shadowmap_pars_vertex
$logdepthbuf_pars_vertex
void main(){
float displacementAmount = data.x;
int x = int(data.y);
int y = int(data.z);
bool edge = bool(data.w);
$map_vertex
$lightmap_vertex
$color_vertex
$morphnormal_vertex
$skinbase_vertex
$skinnormal_vertex
$defaultnormal_vertex
#ifndef FLAT_SHADED
vNormal = normalize( transformedNormal );
#endif
$morphtarget_vertex
$skinning_verte
$default_vertex
if( edge == false ){
vec3 displacement = vec3(sin(time * 0.001 * displacementAmount) * 0.2);
mvPosition = mvPosition + vec4(displacement, 1.0);
gl_Position = projectionMatrix * mvPosition;
}
$logdepthbuf_vertex
vViewPosition = -mvPosition.xyz;
$worldpos_vertex
$envmap_vertex
$lights_phong_vertex
$shadowmap_vertex
vec3 newPosition = position + vec3(mvPosition.xyz);
gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0);
编辑2:
@gamedevelopmentgerm建议在这里混合是我得到的:
我得到的要好得多,但可以在背景中避免黑到白渐变。我只想要蓝到白。