"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "data/shaders/anaglyph_header.fs" between
pymol-v2.1.0.tar.bz2 and pymol-open-source-2.2.0.tar.gz

About: PyMOL is a Python-enhanced molecular graphics tool. It excels at 3D visualization of proteins, small molecules, density, surfaces, and trajectories. It also includes molecular editing, ray tracing, and movies. Open Source version.

anaglyph_header.fs  (pymol-v2.1.0.tar.bz2):anaglyph_header.fs  (pymol-open-source-2.2.0)
uniform bool isPicking;
#ifdef ANAGLYPH #ifdef ANAGLYPH
uniform mat3 matL; uniform mat3 matL;
uniform float gamma; uniform float gamma;
#endif #endif
#ifdef NO_ORDER_TRANSP
#ifdef ONE_DRAW_BUFFER
uniform float which_pass; // 0. - first, 1. - second
#else
#ifdef PURE_OPENGL_ES_2
#extension GL_EXT_draw_buffers : require
#endif
#endif
#define gl_FragColor gl_FragData[0]
float get_weight(float depth, float alpha){
return alpha * max(1e-2, 3e3 * pow(1. - depth, 3.)); // eq #10
}
/*
* Set data for order independant transparency
*
* With multiple buffers:
* gl_FragData[0]: weighted color
* gl_FragData[1]: weight
*
* With one buffer and multi-pass:
* gl_FragData[0]: weighted color in pass 1
* gl_FragData[0]: weight in pass 2
*
*/
void setFragDataForNoOrderTransp(float depth) {
float wi = get_weight(depth, gl_FragColor.a);
gl_FragData[0] = vec4(gl_FragColor.rgb * wi, gl_FragColor.a);
#ifdef ONE_DRAW_BUFFER
// for using one draw buffer, switch on which_pass between color and weights
gl_FragData[0] = mix(gl_FragData[0], vec4(wi, wi, 0., 1.), which_pass);
#else
#ifdef ANAGLYPH
// need to set two components because anaglyph masks out colors for each eye
gl_FragData[1].rg = vec2(wi);
#else
gl_FragData[1].r = wi;
#endif // ANAGLYPH
#endif // ONE_DRAW_BUFFER
}
#endif // NO_ORDER_TRANSP
/*
* Apply post-lighting effects directly to output variables like gl_FragColor
*/
void PostLightingEffectsNoOIT() {
if (isPicking)
return;
#ifdef ray_trace_mode_3
// cel shading
gl_FragColor.rgb = floor(gl_FragColor.rgb * 3.999) / 3.0;
#endif
#ifdef ANAGLYPH
gl_FragColor.rgb = matL * pow(gl_FragColor.rgb, vec3(gamma));
#endif
}
vec3 ComputeChromadepth(float depth);
/*
* ... including OIT
*/
void PostLightingEffects(float depth) {
if (isPicking)
return;
PostLightingEffectsNoOIT();
#ifdef chromadepth_postlighting
vec3 luma_coeff = vec3(.30, .59, .11);
gl_FragColor.rgb = ComputeChromadepth(depth) * dot(luma_coeff, gl_FragColor.rg
b);
#endif
#ifdef transparency_mode_3
#ifndef NO_ORDER_TRANSP
// if transparent, discard in opaque pass
if (gl_FragColor.a < .95)
discard;
#else
// if almost opaque, discard in transparent pass
if (gl_FragColor.a > .95)
discard;
setFragDataForNoOrderTransp(depth);
#endif // NO_ORDER_TRANSP
#endif // transparency_mode_3
}
/*
* Default argument overload
*/
void PostLightingEffects() {
PostLightingEffects(gl_FragCoord.z);
}
#ifdef chromadepth
#ifndef ortho
/*
* "unproject" the depth value if not in orthoscopic view, to get
* a depth gradient which is linear in eye space.
*/
uniform vec2 clippingplanes;
float orthoDepth(float depth) {
float front = clippingplanes.x;
float back = clippingplanes.y;
float front_inv = 1. / front;
float back_inv = 1. / back;
// from proj normalized dev coords to eye space
float depth_eye = 1. / (depth * (back_inv - front_inv) + front_inv);
// from eye space to ortho normalized dev coords
return (depth_eye - front) / (back - front);
}
#endif
/*
* Chromadepth - Calculates a color by depth.
* Uses a rainbow from red (near) to blue (far).
*
* http://chromatek.com/art-and-design/design-guide/
*/
vec3 ComputeChromadepth(float depth) {
#ifndef ortho
depth = orthoDepth(depth);
#endif
const float margin = 1. / 4.;
float hue6 = 6. * 240. / 360. *
clamp(depth * (1. + 2. * margin) - margin, 0., 1.);
return clamp(vec3(
abs(hue6 - 3.) - 1.,
2. - abs(hue6 - 2.),
2. - abs(hue6 - 4.)),
0., 1.);
}
#endif
/*
* Applies pre-lighting and pre-fog color alteration effects.
*/
vec4 ApplyColorEffects(vec4 color, float depth) {
#ifdef chromadepth
#ifndef chromadepth_postlighting
if (!isPicking)
color.rgb = ComputeChromadepth(depth);
#endif
#endif
return color;
}
 End of changes. 2 change blocks. 
0 lines changed or deleted 3 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)