方块小子_Zz 方块小子_Zz
Q群:150111446月之城●繁华仙境
关注数: 17 粉丝数: 6 发帖数: 275 关注贴吧数: 5
游戏openGL ES问题 关于一个多边形的渲染,如何用一个别的模型的光把遮住多边形的渲染:(遮住 if(color.r >= 1.6){ 到jk=1.5; }的部分),顺便求大神解答一下各函数的意思。 uniform vec2 VIEWPORT_DIMENSION; uniform sampler2D TEXTURE_0; uniform sampler2D TEXTURE_1; varying vec2 uv0; varying vec2 uv1; varying vec4 color; varying vec4 skyColor; varying float time; #ifdef FOG varying vec4 fogColor; #endif const lowp float spos = 0.90625; float map(float x, float min, float max, float newMin, float newMax) { return newMin + (newMax - newMin) * ((x - min) / (max - min)); } void main() { vec4 diffuse = texture2D(TEXTURE_0, uv0); vec4 light = texture2D(TEXTURE_1, uv1); #ifdef ALPHA_TEST if(diffuse.a < 0.5) discard; #endif float jk = 1.5; if(color.r == color.g && color.g == color.b){ if(color.r >= 1.6){ jk = 1.7; }else if(color.r <= 0.49){ jk = 0.4; }else if(color.r <= 0.55){ jk = 0.45; }else if(color.r <= 0.6){ jk = 0.5; }else if(color.r <= 0.615){ jk = 0.92; }else if(color.r == 0.9){ jk = 2.5; }else if(color.r <= 0.7){ jk = 1.5; } } float vf = map(min((uv1.x+uv1.y)/2.0, 0.2), 0.2, 0.8, 0.4, 1.0); vec2 cond = 1.0 - abs(sign(vec2(color.r - color.g, color.g - color.b))); float c0 = cond.x * cond.y; diffuse *= color * light*1.05*jk; diffuse.rgb *= clamp(max(1.0 - sign(uv1.y - spos), 0.0) * 0.10 + (1.2 - max(1.35 - sign(uv1.y - spos), 0.0)), 0.6, 1.3); diffuse.rgb *= vec3(1.0,1.1,0.78); #ifdef FOG diffuse.rgb = mix( diffuse.rgb, fogColor.rgb, fogColor.a ); #endif gl_FragColor = diffuse; }
OPENGL_ES问题 关于一个多边形的渲染,如何用一个别的模型的光把遮住多边形的渲染:(遮住 if(color.r >= 1.6){ 到jk=1.5; }的部分),顺便求大神解答一下各函数的意思。 uniform vec2 VIEWPORT_DIMENSION; uniform sampler2D TEXTURE_0; uniform sampler2D TEXTURE_1; varying vec2 uv0; varying vec2 uv1; varying vec4 color; varying vec4 skyColor; varying float time; #ifdef FOG varying vec4 fogColor; #endif const lowp float spos = 0.90625; float map(float x, float min, float max, float newMin, float newMax) { return newMin + (newMax - newMin) * ((x - min) / (max - min)); } void main() { vec4 diffuse = texture2D(TEXTURE_0, uv0); vec4 light = texture2D(TEXTURE_1, uv1); #ifdef ALPHA_TEST if(diffuse.a < 0.5) discard; #endif float jk = 1.5; if(color.r == color.g && color.g == color.b){ if(color.r >= 1.6){ jk = 1.7; }else if(color.r <= 0.49){ jk = 0.4; }else if(color.r <= 0.55){ jk = 0.45; }else if(color.r <= 0.6){ jk = 0.5; }else if(color.r <= 0.615){ jk = 0.92; }else if(color.r == 0.9){ jk = 2.5; }else if(color.r <= 0.7){ jk = 1.5; } } float vf = map(min((uv1.x+uv1.y)/2.0, 0.2), 0.2, 0.8, 0.4, 1.0); vec2 cond = 1.0 - abs(sign(vec2(color.r - color.g, color.g - color.b))); float c0 = cond.x * cond.y; diffuse *= color * light*1.05*jk; diffuse.rgb *= clamp(max(1.0 - sign(uv1.y - spos), 0.0) * 0.10 + (1.2 - max(1.35 - sign(uv1.y - spos), 0.0)), 0.6, 1.3); diffuse.rgb *= vec3(1.0,1.1,0.78); #ifdef FOG diffuse.rgb = mix( diffuse.rgb, fogColor.rgb, fogColor.a ); #endif gl_FragColor = diffuse; }
1 下一页