All files / engine/Source/Shaders PolylineShadowVolumeMorphFS.js

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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                                                                                               
//This file is automatically rebuilt by the Cesium build process.
export default "in vec3 v_forwardDirectionEC;\n\
in vec3 v_texcoordNormalizationAndHalfWidth;\n\
in float v_batchId;\n\
\n\
#ifdef PER_INSTANCE_COLOR\n\
in vec4 v_color;\n\
#else\n\
in vec2 v_alignedPlaneDistances;\n\
in float v_texcoordT;\n\
#endif\n\
\n\
float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) {\n\
    // We don't expect the ray to ever be parallel to the plane\n\
    return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction);\n\
}\n\
\n\
void main(void)\n\
{\n\
    vec4 eyeCoordinate = gl_FragCoord;\n\
    eyeCoordinate /= eyeCoordinate.w;\n\
\n\
#ifdef PER_INSTANCE_COLOR\n\
    out_FragColor = czm_gammaCorrect(v_color);\n\
#else // PER_INSTANCE_COLOR\n\
    // Use distances for planes aligned with segment to prevent skew in dashing\n\
    float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x);\n\
    float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y);\n\
\n\
    // Clamp - distance to aligned planes may be negative due to mitering\n\
    distanceFromStart = max(0.0, distanceFromStart);\n\
    distanceFromEnd = max(0.0, distanceFromEnd);\n\
\n\
    float s = distanceFromStart / (distanceFromStart + distanceFromEnd);\n\
    s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y;\n\
\n\
    czm_materialInput materialInput;\n\
\n\
    materialInput.s = s;\n\
    materialInput.st = vec2(s, v_texcoordT);\n\
    materialInput.str = vec3(s, v_texcoordT, 0.0);\n\
\n\
    czm_material material = czm_getMaterial(materialInput);\n\
    out_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n\
#endif // PER_INSTANCE_COLOR\n\
}\n\
";