| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material){    return czm_getLambertDiffuse(lightDirectionEC, material.normal);}float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material){    return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess);}/** * Computes a color using the Phong lighting model. * * @name czm_phong * @glslFunction * * @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates. * @param {czm_material} material The fragment's material. * * @returns {vec4} The computed color. * * @example * vec3 positionToEyeEC = // ... * czm_material material = // ... * vec3 lightDirectionEC = // ... * out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC); * * @see czm_getMaterial */vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC){    // Diffuse from directional light sources at eye (for top-down)    float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material);    if (czm_sceneMode == czm_sceneMode3D) {        // (and horizon views in 3D)        diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material);    }    float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material);    // Temporary workaround for adding ambient.    vec3 materialDiffuse = material.diffuse * 0.5;    vec3 ambient = materialDiffuse;    vec3 color = ambient + material.emission;    color += materialDiffuse * diffuse * czm_lightColor;    color += material.specular * specular * czm_lightColor;    return vec4(color, material.alpha);}vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC){    float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material);    float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material);    vec3 ambient = vec3(0.0);    vec3 color = ambient + material.emission;    color += material.diffuse * diffuse * czm_lightColor;    color += material.specular * specular * czm_lightColor;    return vec4(color, material.alpha);}
 |