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而不是分割。我编辑了主题,你有解决方案吗?