美文网首页
webgl 23.为正方体添加环境光

webgl 23.为正方体添加环境光

作者: lesliefang | 来源:发表于2017-09-08 17:16 被阅读24次

上一节我们给正方体添加了漫反射,但物体背光的部分几乎完全是黑色的,我们可以再添加环境光让物体显示的更真实。

ambient light.png

非常简单了,直接把环境光加上就行了

<script id="vertex-shader" type="glsl">
    attribute vec4 a_Position;
    attribute vec4 a_Color;
    attribute vec3 a_Normal;
    uniform vec3 u_LightColor;
    uniform vec3 u_LightDirection;
    uniform vec3 u_AmbientLight;
    uniform mat4 u_mvpMatrix;
    varying vec4 v_Color;

    void main() {
        gl_Position = u_mvpMatrix * a_Position;
        // 标准化(把长度变为 1 )
        vec3 normal = normalize(a_Normal);
        float nDotL = max(dot(u_LightDirection, normal), 0.0);
        vec3 diffuse = u_LightColor * a_Color.rgb * nDotL;
        vec3 ambient = u_AmbientLight * a_Color.rgb;
        v_Color = vec4(diffuse + ambient, a_Color.a);
    }
</script>
var u_AmbientLight = gl.getUniformLocation(gl.program, 'u_AmbientLight');
// 设置环境光
gl.uniform3f(u_AmbientLight, 0.2, 0.2, 0.2);

思考:

  1. 现在我们是针对每个顶点计算光照,光照后的颜色值还是会进行插值。要进行更加逼真的光照效果,可以在 fragment shader 中针对每个 fragment 计算光照,但这样性能肯定会有影响。

查看源码

相关文章

  • webgl 23.为正方体添加环境光

    上一节我们给正方体添加了漫反射,但物体背光的部分几乎完全是黑色的,我们可以再添加环境光让物体显示的更真实。 非常简...

  • webgl 25.用点光源为正方体添加光照

    前面两节我们用平行光为正方体添加了光照,这节我们用一个点光源来为正方体添加光照。 平行光只需要一个光线方向和光线颜...

  • webgl 22.为正方体添加光照

    下面来看一下光照先来看一下光源的类型 光源大体可分为 Directional light (平行光),Point ...

  • WEBGL编程指南之实例

    放一个webgl完整的例子 画了一个正方体,cuon-matrix.js为外部矩阵操作的库。

  • webgl 24.为旋转平移后的正方体添加光照

    接上节的例子,我们对正方体做一些模型变换(旋转、平移、缩放)后再添加光照。 物体旋转、平移或缩放后法向量会发生变化...

  • WebGL入门

    初识WebGL 01-手动绘制一个WebGL图形 实现的步骤: 添加一个画布元素 获取到画布元素的基于webgl上...

  • 八 Three.js

    ← D3Three.js 是一个基于 WebGL 的 Javascript 3D 图形库 官方案例:旋转正方体 H...

  • webgl 学习笔记

    webgl 介绍 webgl 是在传统的html文件的系统上,添加了 GLSLes(主要是编写着色器的配置) we...

  • 日常搬砖 修改状态栏为白底黑字

    true 在 style 中 添加这句话,需要 api 大于等于 23.就可以实现 状态栏字体颜色为黑色,如果改...

  • 学习WebGL之绘制正方体

    本系列所有文章目录 下面是本文例子的运行截图,可以前往我的博客查看代码演示。 经过前面7篇文章的铺垫,绘制正方体已...

网友评论

      本文标题:webgl 23.为正方体添加环境光

      本文链接:https://www.haomeiwen.com/subject/qohnjxtx.html