yzt
2023-05-26 de4278af2fd46705a40bac58ec01122db6b7f3d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#if defined(HAS_NORMALS) && !defined(HAS_TANGENTS) && !defined(LIGHTING_UNLIT)
    #ifdef GL_OES_standard_derivatives
    #extension GL_OES_standard_derivatives : enable
    #endif
#endif
 
czm_modelMaterial defaultModelMaterial()
{
    czm_modelMaterial material;
    material.diffuse = vec3(1.0);
    material.specular = vec3(0.04); // dielectric (non-metal)
    material.roughness = 0.0;
    material.occlusion = 1.0;
    material.normalEC = vec3(0.0, 0.0, 1.0);
    material.emissive = vec3(0.0);
    material.alpha = 1.0;
    return material;
}
 
vec4 handleAlpha(vec3 color, float alpha)
{
    #ifdef ALPHA_MODE_MASK
    if (alpha < u_alphaCutoff) {
        discard;
    }
    return vec4(color, 1.0);
    #elif defined(ALPHA_MODE_BLEND)
    return vec4(color, alpha);
    #else // OPAQUE
    return vec4(color, 1.0);
    #endif
}
 
Feature feature;
 
void main() 
{
    czm_modelMaterial material = defaultModelMaterial();
 
    ProcessedAttributes attributes;
    geometryStage(attributes);
 
    #ifdef HAS_FEATURES
    featureStage(feature);
    #endif
 
 
    #ifndef CUSTOM_SHADER_REPLACE_MATERIAL
    materialStage(material, attributes, feature);
    #endif
 
    #ifdef HAS_CUSTOM_FRAGMENT_SHADER
    customShaderStage(material, attributes);
    #endif
 
    lightingStage(material);
 
    #ifdef HAS_FEATURES
    cpuStylingStage(material, feature);
    #endif
    
    #ifdef HAS_MODEL_COLOR
    modelColorStage(material);
    #endif 
 
    vec4 color = handleAlpha(material.diffuse, material.alpha);
 
    gl_FragColor = color;
}