Sha256: b282044264f25d1e6a4826b493ce0ac3bb120bb953dc8138f4802c9db29798f7

Contents?: true

Size: 1.89 KB

Versions: 12

Compression:

Stored size: 1.89 KB

Contents

#ifdef GL_OES_standard_derivatives
    #extension GL_OES_standard_derivatives : enable
#endif

uniform vec4 color;
uniform float cellAlpha;
uniform vec2 lineCount;
uniform vec2 lineThickness;

czm_material czm_getMaterial(czm_materialInput materialInput)
{
    czm_material material = czm_getDefaultMaterial(materialInput);

    vec2 st = materialInput.st;

    float scaledWidth = fract(lineCount.s * st.s);
    scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5));
    float scaledHeight = fract(lineCount.t * st.t);
    scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5));

    float value;
#ifdef GL_OES_standard_derivatives
    // Fuzz Factor - Controls blurriness of lines
    const float fuzz = 1.2;
    vec2 thickness = lineThickness - 1.0;

    // From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13.
    vec2 dx = abs(dFdx(st));
    vec2 dy = abs(dFdy(st));
    vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount;
    value = min(
        smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth),
        smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight));
#else
    // Fuzz Factor - Controls blurriness of lines
    const float fuzz = 0.05;

    vec2 range = 0.5 - (lineThickness * 0.05);
    value = min(
        1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth),
        1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight));
#endif

    // Edges taken from RimLightingMaterial.glsl
    // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html
    float dRim = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC));
    float sRim = smoothstep(0.8, 1.0, dRim);
    value *= (1.0 - sRim);

    vec3 halfColor = color.rgb * 0.5;
    material.diffuse = halfColor;
    material.emission = halfColor;
    material.alpha = color.a * (1.0 - ((1.0 - cellAlpha) * value));

    return material;
}

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
cesium-0.25.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.24.1 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.24.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.23.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.22.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.21.1 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.21 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.20.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.19.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.18.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.17.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl
cesium-0.16.0 app/assets/javascripts/Shaders/Materials/GridMaterial.glsl