Glsl 使用从上到下的渐变倍增出射光

Glsl 使用从上到下的渐变倍增出射光,glsl,shader,fragment-shader,Glsl,Shader,Fragment Shader,我正在尝试在片段着色器中产生效果。。。这就是我在没有效果的情况下得到的结果: 这是我用“渐变”乘以颜色得到的结果: float fragPosition = gl_FragCoord.y / screenSize.y; outgoingLight /= fragPosition; 所以我试着分割,但是颜色有点被光灼伤了 float fragPosition = gl_FragCoord.y / screenSize.y; outgoingLight /= fragPosition; 下面是我

我正在尝试在片段着色器中产生效果。。。这就是我在没有效果的情况下得到的结果:

这是我用“渐变”乘以颜色得到的结果:

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:

@gamedevelopment之后,我得到的建议如下:


这比我得到的要好得多,但有可能避免背景中的黑白渐变。我只想要蓝色到白色。

我认为每个面都需要在顶点着色器中进行调整。你能添加它吗?是的,我现在就添加。尝试混合outgoingLight,float41,1,1,1,1-fragPosition而不是分割。我编辑了主题,你有解决方案吗?