如何将3D立方体平面光照调制渐变?

不知道为什么我原本是想做成那样,但是好像出错了
img
就像是这样,每一个面感觉是一起变亮一起变暗,在同一个光照强度到另一个。
下面是我定义光照的代码

        private void DirectLighting(Matrix4x4 m,Vector3 worldEyeposition, ref Vertex vert)
        {
            Vector3 worldPoint = vert.point * m;//顶点位置世界坐标
            Vector3 normal = vert.normal * m.Inverse().Transpose();//
            normal = normal.Normalize();//单位化
            Color emissionColor = cube.mesh.Material.emissive;//自发光;
            Color ambientColor = _ambientColor * cube.mesh.Material.ka;//环境光

            Vector3 lightDir = _dirLight.dir;
            float diffuse = Vector3.Dot(normal, lightDir);//夹角
            if (diffuse<0)
            {
                diffuse = 0;
            }
            Color diffuseColor = _dirLight.color * cube.mesh.Material.diffuse * Math.Max(0, Vector3.Dot(normal, lightDir));
            Vector3 viewDir = (worldEyeposition - worldPoint).Normalize();
            Vector3 reflectDir = (viewDir + lightDir).Normalize();
            float specular = (float)Math.Pow(Math.Max(Vector3.Dot(reflectDir, normal), 0.0), 32);
            float specularStrength = 0.5f;
            Color specularColor =cube.mesh.Material.specular * specular * _dirLight.color * specularStrength;
            vert.lightingColor = emissionColor + ambientColor + diffuseColor+specularColor;
        }

求各位博主提供解决办法。