UNPKG

molstar

Version:

A comprehensive macromolecular library.

2 lines (1 loc) 1.12 kB
export declare const apply_fog = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat fogAlpha = (1.0 - fogFactor) * gl_FragColor.a;\nfloat preFogAlpha = gl_FragColor.a;\nif (!uTransparentBackground) {\n if (gl_FragColor.a < 1.0) {\n // transparent objects are blended with background color\n gl_FragColor.a = fogAlpha;\n } else {\n // mix opaque objects with background color\n gl_FragColor.rgb = mix(gl_FragColor.rgb, uFogColor, fogFactor);\n }\n} else {\n #if defined(dRenderVariant_colorDpoit)\n if (gl_FragColor.a < 1.0) {\n // transparent objects are blended with background color\n gl_FragColor.a = fogAlpha;\n } else {\n // opaque objects need to be pre-multiplied alpha\n gl_FragColor.rgb *= fogAlpha;\n gl_FragColor.a = fogAlpha;\n }\n #else\n // pre-multiplied alpha expected for transparent background\n gl_FragColor.rgb *= fogAlpha;\n gl_FragColor.a = fogAlpha;\n #endif\n}\n";