X __text__TEXT-Z__gcc_except_tab__TEXT0 (__literal4__TEXT__literal16__TEXT__literal8__TEXT __StaticInit__TEXT0T( __bss__DATA__cstring__TEXT|4|__const__DATA(R__const__TEXT__mod_init_func__DATA __compact_unwind__LD __eh_frame__TEXTphh h2  p-D2 P##aUHAVSHHHHHǃHǃHǃHǃHǃHǃHǃHǃHǃHǃ Hǃ(Hǃ0Hǃ8Hǃ@HHHHHHǃƃǃƃƃHǃHǃHǃHǃƃHǃxHǃpHǃhHǃ`HǃXHǃPHǃHHH[A^]IHL UHSPHHHHǃHǃHǃHǃHǃHǃHǃHǃHǃHǃ Hǃ(Hǃ0Hǃ8Hǃ@HHHHHHǃƃǃƃƃHǃHǃHǃHǃƃHǃxHǃpHǃhHǃ`HǃXHǃPHǃHH[]f.DUHAVSLI9tLHL=4HHLLH[A^A_]ÐUHAWAVSPIHtCtMHHH5׌LL=ΌL=xHHH5LHHH5|LHHH5fLL=gHHLLH[A^A_]fUHH]UHSPHHHHǃHǃHǃHǃHǃHǃHǃHǃHǃHǃ Hǃ(Hǃ0Hǃ8Hǃ@HHHHHHǃƃǃƃƃHǃHǃHǃHǃƃHǃxHǃpHǃhHǃ`HǃXHǃPHǃHH[]f.DUHAVSHHHHtHH18H[A^]IHLPDUHAVSHHHHtHH18H[A^]IHLUHAVSHHHHtHH18HH[A^]IHLUH9u]ÉHǘ]f.DUHAWAVAUATSH8IHEHHHHHHH@HHHEEL-MuLI@LHL=ILHDžHDžHDžHDžDžH5H.I$H}HH}HUHH}HuH}Et H}LLLt HHH5HHHI|$8I$HA$H}H8[A\A]A^A_]HHHHH} HHEtH}HLLLt HHHH5HHHH}H HHfDUHAWAVAUATSH8IHEHHHHHHH@HHHEEL-MuLI@LHL=ILHDžHDžHDžHDžDžH5.H-I$H}HH}HUHH}HuH}Et H}LLLt HHH5HHHI$I$HA$I$HA$H}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H Hf.UHAVSHIHHHH߾H߾XAvPAVTH߹A[A^]UHAVSHIHHHH߾'H߾0AvPAVTH߹A [A^]UHAVSIHHHLsPSTL[A^]DUHAVSHLwhHHLH[hH߾H߾[A^]fUHAWAVATSIIIHhMt61f.fI|$hAIHE1HI9uI$LDI|$hD[A\A^A_]UHAVSHL5HAHACPCT*YCXH,[A^]UHAWAVAUATSHXIHEHHHHHHH@HHHEEL%Mt$LI@LHL=ILHDžHDžHDžHDžDžH5H.IH}HH}HUHH}HuH}Et H}LLLt HHH5HHHI]hH߾H߾IxAuHAULEMPAET$1E1I]hH߾H߾I}hAEI}hI}hIH1E1I}hKHE1IELI}hIx ILIt&ILIHH1 HE H//VTK::FH]HSQ::DeclHEE@HE(Q)EHr2D oDepHH(Hm sampleHH H; uniforHHHearValueHHHfloat clHHHuniform H@0th; @4HHuHUEt H}Et H}E H]HSQ::ImplHEEHHE(Q)EH5>HƃHHuHUEt H}Et H}ILHEH}]L}DLH}AHLDHELDEtHMHMH}HLLE1IEE t HIIu.IIIIHDž?Hs IH5~IIxH5~H߉IIIxH}HX[A\A]A^A_]H}EH}:HEt@[Hue.HuT HEt,HEuEuu*H}EtH}HHEtHHHH} HHEtH}HLLLt HHHH5HHHHHH}H HUHAWAVAUATSH8HHEHLHHHHH@HLHEEL-MuLI@LLL=ILHDžHDžHDžHDžDžH5{H(LH}HH}HULH}HuH}Et H}LLLt HHH5HHHDH{hH{hHH1E1H{hJHE1HH߾H{htǃHHH1@HH HHHHH}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H Hf.@UHAWAVAUATSH8HHEHLHHHHH@HLHEEL-MuLI@LLL=ILHDžHDžHDžHDžDžH5yH<LH}HH}HULH}HuH}Et H}LLLt HHH5HHHH{hH{hHH1E1HH߾H{hWWWW@DH{hH{hJH1E1HH߾H{hfFWW(@Htt HHH}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H Hf.fUHAWAVAUATSH8HHEHLHHHHH@HLHEEL-MuLI@LLL=ILHDžHDžHDžHDžDžH5vH0LH}HH}HULH}HuH}Et H}LLLt HHH5HHHDDH{hH{hHH1E1H{hJHE1H{hJHE1HH߾H{h HtǃHHH1@HHHHHHHHHH}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H HUHHH]@UHAWAVAUATSHXIHEHHHHHHH@HHHEEL%Mt$LI@LHL=ILHDžHDžHDžHDžDžH5sH(IH}HH}HUHH}HuH}Et H}LLLt HHH5HHHI}hI}hIP1E1IELI}hIH HILIt&ILIHH1HE H//VTK::FH]HSQ::DeclHEE HE(@)EHD newPeeHHHsampler2HHHuniform H@el; @HHuHUEt H}Et H}E H]HSQ::ImplHEEHHE(5@)EH5nqvHCvHHuHUEt H}Et H}ILHEH}]L}DLH}AHLDHELDEtHMHMH}HLLE1IEEt HIHI u5I(I II(HIIHH5pH߉I I IHH}HX[A\A]A^A_]H}E(H}":HEt@[Hue*HuT HEt,HEuEuu*H}EtH}HHEtHHHH} HHEtH}HLLLt HHHH5HHH HHH}H Hf.UHAWAVAUATSH8IHEHHHHHHH@HHHEEL-MuLI@LHL=ILHDžHDžHDžHDžDžH5mH5I$H}HH}HUHH}HuH}Et H}LLLt HHH5HHHHHA$IĬfLH}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H HfUH勇]fUHAWAVAUATSH8IHEHHHHHHH@HHHEEL-MuLI@LHL=ILHDžHDžHDžHDžDžH5iH;I$H}HH}HUHH}HuH}Et H}LLLt HHH5HHHI|$hI|$hI$H1E1I$LI|$hWWWW@I$tA$t LLH}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H Hf.UHAWAVAUATSH8HHEHLHHHHH@HLHEEL-MuLI@LLL=ILHDžHDžHDžHDžDžH5.gH+LH}HH}HULH}HuH}Et H}LLLt HHH5HHHDH{hH{hHH1E1H{hJHE1HH߾H{hD HtǃHHH߾@HHHHHHHxHHHHHHHHxD H}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H Hf.@UHHH]@UHAWAVAUATSH8IHEHHHHHHH@HHHEEL-MuLI@LHL=ILHDžHDžHDžHDžDžH5TdH4I$H}HH}HUHH}HuH}Et H}LLLt HHH5HHHHHA$IĴfLH}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H HfUH勇]fUHHtt]]f.UHAWAVAUATSH8IHEHHHHHHH@HHHEEL-MuLI@LHL=ILHDžHDžHDžHDžDžH5^H.I$H}HH}HUHH}HuH}Et H}LLLt HHH5HHHA$I|$hI|$hIH1E1I$LI|$hWWWW@H}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H Hf.UHAWAVAUATSHXIHEHHHHHHH@HHHEEL%Mt$LI@LHL=ILHDžHDžHDžHDžDžH5(\H:IH}HH}HUHH}HuH}Et H}LLLt HHH5HHHAI}hI}hIH1E1IELI}h ILIt&ILIHH1HE H//VTK::FH]HSQ::DeclHEE HE(+)EHD inTex;HHHsampler2HHHuniform Hf@ HHuHUEt H}Et H}E H]HSQ::ImplHEE0HE(~*)EHCoord); HH'Hex, texCHH Hre2D(inTHHH = textuHHHgData[0]HHH gl_FraH@/HHuHUEt H}Et H}ILHEH}]L}DLH}AHLDHELDEtHMHMH}HLLE1IEEt HIIu.IIIIHAIHMAIHH5XLIIAIHH}HX[A\A]A^A_]H}EH}:HEt@[Hue*HuT HEt,HEuEuu*H}EtH}HHEtHHHH} HHEtH}HLLLt HHHH5HHH HHH}H HfUHAWAVAUATSH8HHEHLHHHHH@HLHEEL-MuLI@LLL=ILHDžHDžHDžHDžDžH5;XH)LH}HH}HULH}HuH}Et H}LLLt HHH5HHH HtǃHH{hH{hHP1E1HH߾H{hHHtHH1@HHt"tHH߾@HHHH}H8[A\A]A^A_]HHHH} HHEtH}HLLLt HHHH5HHHHHH}H Hf.DUHAWAVAUATSHXIHEHHHHHHH@HHHEEL%Mt$LI@LHL=ILHDžHDžHDžHDžDžH5TH(IH}HH}HUHH}HuH}Et H}LLLt HHH5HHHAIHIP HA}HAuLAUPAMTAt   ILI0t&ILI0HH1HE H//VTK::FH]HSQ::DeclHEE@HE( )EHexture; HH7HD backTeHP0Hsampler2HP(Huniform Hp HHHD frontTHHHPH0@?HHuHUEt H}Et H}E H]HSQ::ImplHEEHHE(> )EH5RHƃHHuHUEt H}Et H}ILHEH}]L}DLH}AHLDHELDEtHMHMH}HLLE1I0EEt HI0HI8u5I@I8I0I@HI0AIHH5VSH߉I0IPH5?SH߉I8I8AIHIPH}HX[A\A]A^A_]H}EH}:HEt@[Hue*HuT HEt,HEuEuu*H}EtH}HHEtHHHH} HHEtH}HLLLt HHHH5HHH HHH}H HUHAVSHL5HAIH[A^]f.UHH Q]UHH]UH]f.UHAVSHHHHHǃHǃHǃHǃHǃHǃHǃHǃHǃHǃ Hǃ(Hǃ0Hǃ8Hǃ@HHHHHHǃƃǃƃƃHǃHǃHǃHǃƃHǃxHǃpHǃhHǃ`HǃXHǃPHǃHHH[A^]IHL UHG0]UH9w4u]Éw4H]UHG4]UHHG8]fDUHOX?]fWfUf.u{GXH]]DUHW]UH]fUHGX]DUH9w`u]Éw`H]UHG`]UH9u]ÉH]fUHH]UH9u]ÉH]fUHAWAVSPHH@L<H HQHLtpH@HLpH\H HHLDHt IXHH5HLLH[A^A_]f.fUHAWAVSPHHHHHLwpH@HGpLHHHGGHt H{XLH5HHLHH[A^A_]fUHAWAVSPHH@HH HQHLtpH@HLpL|H HHLDHt H{XLH5HHLHH[A^A_]@UHSPHHHHG@t H{PHH[]f.fUHSPHHHHG@t H{PHHH[]@UHSHH~0LVXI9sH~XIDIu MtF@uH^@HE1ۅu1HyHH^PMI)ۅttuvAuHH+N(HybLHyXHNH+NHxKI9|FHtAtH~t4AtHt)AtHVHHVLV At HcHV(HV0IH@xH@pH@hH@`H@XH@PH@HH@@H@8H@0H@(H@ H@H@H@HL[]DUHSPAHHH1P HH[]f.UHHG0HOXH9sHGXHG`tHW H9sHO HHOH9s]f.DUHHG0HOXH9sHGXHHWH9Ws#t G`u@8ruHBHGHO @r]HHWHO 1]DUHAWAVAUATSH(t$AHLLo0L+HG8I9tHsXE1AC`HC(HEHCXHEH{@H}1H}t H7HH1HEI)HuH)HMuHHHCHHKPHHK(HC8ILk0HHsXIMHMHSXH9HuHBHHSXC`t"C@u Hs@HHsPIHsL{HS I9tHK0EuEDH([A\A]A^A_]AHH@hHH([A\A]A^A_]HUHSPHH=GHtZH=GHtGH=GHt4H=GHt!H=GHtHH[]H[]f.@UHAWAVAUATSH(IIHH}H}HH@L$H|(DluJH}H}LH5H}HHǾ Q8EH}EA$H}MAA LIDDLLMHuHH@H<t H}HH([A\A]A^A_]IH}IH}ILHHxHHH Hf.@UHAWAVAUATSH8HMIIDMHH)IHE1H)LOHUHH)H~IELHP`H9MLeIsC6EH]Le'I^HHIHEHH]LuH]uLLC4EtH]HLeIELHLP`HEt H}L9u)HuI)M~IELLP`L9u ID$E1LH8[A\A]A^A_]HEt H}H f.UHAWAVAUATSPIF`u ubIFIFIHF0LfXI9sHFXIH^(MI)IIwVCD-ALHL9ukH^Lf MI)IICD-ALHL9TM}ILIFIM>MnL9,I RL9s J (H9@LHHqHHHljH`sv1M}ILIFIM>MnL9I L9s J (H9LHHyHHHƉH`1"H)1D3L30L0D3 L30D0 L00D3@L3PD0@L0PD3`L3pD0`L0pHHuHt.HHf.fD3 3D0 0H HuHL9HfD HHI9uHH)13L30L0D3 L30D0 L00D3@L3PD0@L0PD3`L3pD0`L0pHHuHt.HHf.fD3 3D0 0H HuHI9tHf. HHI9uLH[A\A]A^A_]LaXM  9   i^       H M   :   meJ ~      Y   F       QFJ~     QFJ~     i^J~  p   mm  -  *  -   -     -    -   -   \ Z ^ - Z ^ -R  *    Z  *  ^  -  R - = = EMEJ~     MEJ~     J      jt7    -     . y   QFJ~     QFJ~     QFJ~     J       r 7     *     {    MEJ~  '   QFJ~     QFJ~     MEJ~  '   MEJ~  ]   J       J 7              QFJ~     J       m 7     -          f*A6 Qa!N  q!!1!! !QB1#!!!1!!QE!aVQB1'!qaA4!v!1/A???UHAVSHHH=L5HLHHH=HL[A^]vtkDualDepthPeelingPass::Render//VTK::Depth::Implgl_FragDepth = gl_FragCoord.z;//VTK::DepthPeeling::Decuniform sampler2D opaqueDepth; //VTK::DepthPeeling::PreColorivec2 pixel = ivec2(gl_FragCoord.xy); float oDepth = texelFetch(opaqueDepth, pixel, 0).y; if (oDepth != -1. && gl_FragDepth > oDepth) { // Ignore fragments that are occluded by opaque geometry: gl_FragData[1].xy = vec2(-1., oDepth); return; } else { gl_FragData[1].xy = vec2(-gl_FragDepth, gl_FragDepth); return; } uniform sampler2D lastFrontPeel; uniform sampler2D lastDepthPeel; ivec2 pixelCoord = ivec2(gl_FragCoord.xy); vec4 front = texelFetch(lastFrontPeel, pixelCoord, 0); vec2 minMaxDepth = texelFetch(lastDepthPeel, pixelCoord, 0).xy; float minDepth = -minMaxDepth.x; float maxDepth = minMaxDepth.y; // Use a tolerance when checking if we're on a current peel. // Some OSX drivers compute slightly different fragment depths // from one pass to the next. This value was determined // through trial-and-error -- it may need to be increased at // some point. See also the comment in vtkDepthPeelingPass's // shader. float epsilon = 0.0000001; // Default outputs (no data/change): gl_FragData[0] = vec4(0.); gl_FragData[1] = front; gl_FragData[2].xy = vec2(-1.); // Is this fragment outside the current peels? if (gl_FragDepth < minDepth - epsilon || gl_FragDepth > maxDepth + epsilon) { // Early return removed to avoid instruction-reordering bug // with dFdx/dFdy on OSX drivers. // return; } // Is this fragment inside the current peels? if (gl_FragDepth > minDepth + epsilon && gl_FragDepth < maxDepth - epsilon) { // Write out depth so this frag will be peeled later: gl_FragData[2].xy = vec2(-gl_FragDepth, gl_FragDepth); // Early return removed to avoid instruction-reordering bug // with dFdx/dFdy on OSX drivers. // return; } // Continue processing for fragments on the current peel: //VTK::DepthPeeling::Implvec4 frag = gl_FragData[0]; // Default outputs (no data/change): // This fragment is on a current peel: if (gl_FragDepth >= minDepth - epsilon && gl_FragDepth <= minDepth + epsilon) { // Front peel: // Clear the back color: gl_FragData[0] = vec4(0.); // We store the front alpha value as (1-alpha) to allow MAX // blending. This also means it is really initialized to 1, // as it should be for under-blending. front.a = 1. - front.a; // Use under-blending to combine fragment with front color: gl_FragData[1].rgb = front.a * frag.a * frag.rgb + front.rgb; // Write out (1-alpha): gl_FragData[1].a = 1. - (front.a * (1. - frag.a)); } else if (gl_FragDepth >= maxDepth - epsilon && gl_FragDepth <= maxDepth + epsilon) { // Back peel: // Dump premultiplied fragment, it will be blended later: frag.rgb *= frag.a; gl_FragData[0] = frag; } else { // Need to clear the colors if not on a current peel. gl_FragData[0] = vec4(0.); gl_FragData[1] = front; } uniform sampler2D lastDepthPeel; ivec2 pixelCoord = ivec2(gl_FragCoord.xy); vec2 minMaxDepth = texelFetch(lastDepthPeel, pixelCoord, 0).xy; float minDepth = -minMaxDepth.x; float maxDepth = minMaxDepth.y; // Discard all fragments outside of the last set of peels: if (gl_FragDepth < minDepth || gl_FragDepth > maxDepth) { discard; } // Pre-multiply alpha for depth peeling: gl_FragData[0].rgb *= gl_FragData[0].a; // Transform zStart and zEnd to texture_coordinates mat4 NDCToTextureCoords = ip_inverseTextureDataAdjusted * in_inverseVolumeMatrix * in_inverseModelViewMatrix * in_inverseProjectionMatrix; // Start point vec4 startPoint = WindowToNDC(gl_FragCoord.x, gl_FragCoord.y, zStart); startPoint = NDCToTextureCoords * startPoint; startPoint /= startPoint.w; // startPoint could be located outside of the bounding box (bbox), this // is the case in: // 1. PeelVolumesOutside: Areas external to any geometry. // 2. PeelVolumetricGeometry: Areas where the volume is contained within // translucent geometry but the containing geometry lies outside of the bbox // (startPoint is either in-front or behind the bbox depending on the viewpoint). // Given that startPoint could be located either in-front, inside or behind the // bbox (the ray exit is unknown hence it is not possible to use clamp() directly), // the clamp is divided in these three zones: // a. In-front: clamp to ip_textureCoords (bbox's texture coord). // b. Inside: use startPoint directly as it is peeling within the bbox. // c. Behind: discard by returning vec4(0.f). // Initialize g_dataPos as if startPoint lies Inside (b.) g_dataPos = startPoint.xyz; bool isInsideBBox = !(any(greaterThan(startPoint.xyz, in_texMax)) || any(lessThan(startPoint.xyz, in_texMin))); if (!isInsideBBox) { vec3 distStartTexCoord = ip_textureCoords.xyz - startPoint.xyz; if (dot(distStartTexCoord, g_dirStep) < 0) { // startPoint lies behind the bounding box (c.) return vec4(0.0); } // startPoint lies in-front (a.) g_dataPos = ip_textureCoords.xyz; } g_dataPos += g_rayJitter; // End point vec4 endPoint = WindowToNDC(gl_FragCoord.x, gl_FragCoord.y, zEnd); endPoint = NDCToTextureCoords * endPoint; endPoint /= endPoint.w; // Compute the number of steps and reinitialize the step counter. g_terminatePointMax = length(endPoint.xyz - g_dataPos.xyz) / length(g_dirStep); g_currentT = 0.0; g_fragColor = vec4(0.0); //VTK::Termination::Init// Termination is defined somewhere else within the pass (CallWorker::Impl // and Ray::Init), so this tag is substituted for an empty implementation // to avoid unnecessary code. uniform sampler2D outerDepthTex; uniform sampler2D innerDepthTex; //VTK::CallWorker::Impl vec2 pixelCoord = vec2(gl_FragCoord.x, gl_FragCoord.y); vec2 inner = texture2D(innerDepthTex, pixelCoord * in_inverseWindowSize).xy; vec2 outer = texture2D(outerDepthTex, pixelCoord * in_inverseWindowSize).xy; initializeRayCast(); vec4 front = vec4(0.f); vec4 back = vec4(0.f); // Check for the presence of opaque/trans geometry: bool hasOpaqueGeometry = outer.y >= 0.f; bool hasTranslucentGeometry = inner.x != -1.f; bool hasAnyGeometry = hasOpaqueGeometry || hasTranslucentGeometry; vec2 frontRange = vec2(1.f, -1.f); vec2 backRange = vec2(1.f, -1.f); if (!hasAnyGeometry) { // No opaque or translucent geometry backRange = vec2(0., 1.); } else if (!hasTranslucentGeometry) { // Opaque geometry only. float opaqueDepth = inner.y; backRange = vec2(0.f, opaqueDepth); } else // translucent geometry, maybe opaque, too: { float opaqueDepth = hasOpaqueGeometry ? outer.y : 1.f; frontRange = vec2(0.f, -inner.x); if (front.a < g_opacityThreshold) { // The color returned by castRay() has alpha pre-multiplied, // as required for back-blending. backRange = vec2(inner.y, opaqueDepth); } } if (frontRange.x < frontRange.y) { front = castRay(frontRange.x, frontRange.y); } if (backRange.x < backRange.y) { back = castRay(backRange.x, backRange.y); } gl_FragData[0] = back; gl_FragData[1] = front; //VTK::DepthPeeling::Ray::Init//VTK::DepthPeeling::Ray::PathCheck // Ensure end is not located before start. This could be the case // if end lies outside of the volume's bounding box. In those cases // a transparent color is returned. vec3 rgrif = endPoint.xyz - g_dataPos.xyz; if (dot(rgrif, g_dirStep) < 0) { return vec4(0.f); } uniform sampler2D outerDepthTex; uniform sampler2D innerDepthTex; uniform sampler2D lastFrontColorTex; uniform sampler2D opaqueDepthTex; vec2 pixelCoord = vec2(gl_FragCoord.x, gl_FragCoord.y); vec2 innerDepths = texture2D(innerDepthTex, pixelCoord * in_inverseWindowSize).xy; vec2 outerDepths = texture2D(outerDepthTex, pixelCoord * in_inverseWindowSize).xy; vec4 lastFrontColor = texture2D(lastFrontColorTex, pixelCoord * in_inverseWindowSize); // Discard processed fragments if (outerDepths.x == -1) { discard; } // Negate the near depths; they're negative for MAX blending: float frontStartDepth = -outerDepths.x; float frontEndDepth = -innerDepths.x; float backStartDepth = innerDepths.y; float backEndDepth = outerDepths.y; // Only record the back color (for occlusion queries) if the // front/back ranges are the same: bool onlyBack = frontStartDepth == backStartDepth && frontEndDepth == backEndDepth; // In the last peel, innerDepths may be (-1, -1) for most of the // fragments. Casting a ray from [outerDepths.x, 1.0] would result // in accumulating areas that have already been accounted for in // former volume peels. In this case frontEndDepth should be the // outer max instead. Because of this, the back castRay() is also // skipped. bool noInnerDepths = innerDepths.x == -1.0; if (noInnerDepths) { frontEndDepth = outerDepths.y; } // Peel passes set -1 in pixels that contain only opaque geometry, // so the opaque depth is fetched in order to z-composite volumes // with opaque goemetry. To do this, the end point of front is clamped // to opaque-depth and back ray-cast is skipped altogether since it // would be covered by opaque geometry anyway. float oDepth = texture2D(opaqueDepthTex, pixelCoord * in_inverseWindowSize).x; bool endBehindOpaque = frontEndDepth >= oDepth; float clampedFrontEnd = frontEndDepth; if (endBehindOpaque) { clampedFrontEnd = clamp(frontEndDepth, oDepth, oDepth); } initializeRayCast(); vec4 frontColor = vec4(0.f); if (!onlyBack) { frontColor = castRay(frontStartDepth, clampedFrontEnd); } vec4 backColor = vec4(0.); if (!endBehindOpaque && !noInnerDepths) { backColor = castRay(backStartDepth, backEndDepth); } // The color returned by castRay() has alpha pre-multiplied, // as required for back-blending. gl_FragData[0] = backColor; // Front color is written with negated alpha for MAX blending: lastFrontColor.a = 1. - lastFrontColor.a; // Use under-blending to mix the front color on-the-fly: // (note that frontColor.rgb is already multiplied by its // alpha, this is done within castRay()) gl_FragData[1].rgb = lastFrontColor.a * frontColor.rgb + lastFrontColor.rgb; // Write out (1-alpha) for MAX blending: gl_FragData[1].a = 1. - (lastFrontColor.a * (1. - frontColor.a)); uniform sampler2D depthRangeTex; vec2 pixelCoord = vec2(gl_FragCoord.x, gl_FragCoord.y); vec2 depthRange = texture2D(depthRangeTex, pixelCoord * in_inverseWindowSize).xy; // Discard processed fragments if (depthRange.x == -1.0) { discard; } float startDepth = -depthRange.x; float endDepth = depthRange.y; initializeRayCast(); vec4 color = castRay(startDepth, endDepth); // The color returned by castRay() has alpha pre-multiplied, // as required for back-blending. gl_FragData[0] = color; opaqueDepthlastDepthPeelfrontDepthPeelouterDepthTexinnerDepthTexlastFrontColorTexopaqueDepthTexdepthRangeTexvtkDualDepthPeelingPass::RenderTranslucentPassvtkDualDepthPeelingPass::RenderVolumetricPassvtkDualDepthPeelingPass::InitializevtkDualDepthPeelingPass::PreparevtkDualDepthPeelingPass::CopyOpaqueDepthBuffer//VTK::FSQ::Decluniform float clearValue; uniform sampler2D oDepth; //VTK::FSQ::Impl float d = texture2D(oDepth, texCoord).x; if (d == clearValue) { // If no depth value has been written, discard the frag: discard; } gl_FragData[0] = gl_FragData[1] = vec4(-1, d, 0., 0.); clearValueoDepthvtkDualDepthPeelingPass::InitializeDepthvtkDualDepthPeelingPass::PeelVolumesOutsideTranslucentRangevtkDualDepthPeelingPass::PeelvtkDualDepthPeelingPass::ClearFrontDestinationvtkDualDepthPeelingPass::CopyFrontSourceToFrontDestinationuniform sampler2D inTex; gl_FragData[0] = texture2D(inTex, texCoord); inTexvtkDualDepthPeelingPass::InitializeTargetsForTranslucentPassvtkDualDepthPeelingPass::InitializeTargetsForVolumetricPassvtkDualDepthPeelingPass::PeelTranslucentGeometryvtkDualDepthPeelingPass::PeelVolumeGeometryvtkDualDepthPeelingPass::BlendBackBufferuniform sampler2D newPeel; vec4 f = texture2D(newPeel, texCoord); // new frag if (f.a == 0.) { discard; } gl_FragData[0] = f; newPeelvtkDualDepthPeelingPass::EndTranslucentOcclusionQueryvtkDualDepthPeelingPass::EndVolumetricOcclusionQueryvtkDualDepthPeelingPass::FinalizevtkDualDepthPeelingPass::AlphaBlendRendervtkDualDepthPeelingPass::BlendFinalImageuniform sampler2D frontTexture; uniform sampler2D backTexture; vec4 front = texture2D(frontTexture, texCoord); vec4 back = texture2D(backTexture, texCoord); front.a = 1. - front.a; // stored as (1 - alpha) // Underblend. Back color is premultiplied: gl_FragData[0].rgb = (front.rgb + back.rgb * front.a); // The first '1. - ...' is to convert the 'underblend' alpha to // an 'overblend' alpha, since we'll be letting GL do the // transparent-over-opaque blending pass. gl_FragData[0].a = (1. - front.a * (1. - back.a)); frontTexturebackTexturevtkDualDepthPeelingPassvtkDepthPeelingPassvtkOpenGLRenderPassvtkRenderPassvtkObjectp@@p23vtkDualDepthPeelingPassNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEENSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE!A0`T!  XADva`lXA CXA @|XA",XA؇ XA,@,p` ) U A() )\ At1)1aP2a`3 p35P!AHp5P!AX5X!Ah 6!P6XAx8XAȊ;]!;]!P<;!<G!<} `=]!=IXAEBXA`HTXAKXAhPOpOfXAUXAXXXXA[XA__XAP@b`b#bXApeXAlaXAoXA܏Pv5!v v vv!Axx xx x x;y  y0y @y`y pyy yyaPz~aza`{4{<{{`}%}A}[@~hXA@RXASXA-X0T!zRx $0+AC B$D,TAC C$l, AC $/vAC F$;AC $h?"AC $ F,AC B$4FAC B$\H)AC B$P)AC B$`Y)AC $hYAC F$YAC F$$Z AC $LZAC B$t8]!AC $b]AC C$b]AC C$b;AC C$cGAC C,<0c}AC G$lc]AC C$HuAC $P~AC $(AC $ AC $4#AC $\5AC C$ AC $ AC $hAC $ AC $$AC $L AC $t؜ AC $;AC $؜ AC $AC $ AC $<AC $d AC $pAC $h AC $PAC $HAC F$,~AC F$TAC F$|p4AC B$<AC B${AC A$%AC B$AAC $D([AC $lРAC B,-AC J$TAC CzPLRx ,$ AC C4T $ AC P4x'lAC P4-CAC P42|AC P44`6,7AC P4lX9SAC P4?UAC K4G\+AC K,SPǨAC C,DSPAC C,tSXAC C4PTgAC P4VAC P4P[IAC P4LhbBAC P4eT#AC P4h?AC P4 lf[AC P4,XrAC P4dtשAC P4wAC P4p{AC P4 (~'AC P4DЀ?AC P4|8aAC P4pAC P,xAC C4ȘhAC M4TRAC M4SAC M)-3-ȃ----V-0---|-r-m-^-Q-C-#--r-ǀ--=-b-"--------~-~-{-{-{-{={-{-l{=X{-F{->{-2{}=+{-#{- {=z=z-z-z-z}=z-z-~z=`z=@z-.z-"z}=z-z-y=y=(yxwx-ox-\x-v~v-v-vb-v]v=Lv-Bv-:v-%v-v- v}=u-u-u-u-u-u-u-su-Zu-Ku-t-t-t-t-t-t-tt-ot-ct-YtRt-?t-5t.t-t-s-s-s-[s-=s-$s-s-s-r-rrr-r-r-~r- rr-q-q-q-xq-dq-Oq-9q=2q-(q-q-q-p-p}=p-p-p-p-p-p-zpk-cpu-Rp p=p-o=o-ov=mo-co-[o-Ho-m-/m-&m-m- mk-lu-ll=l-tl=^l-@lv= l-l-k-k-k-k}=k-k-~k-lk-bk-Vk-Nk-1k-k- k-j-j-gj-^j-Jj->j-9j--j-#jj-j-i-i-i-i-7i-i-i-h-h-nhch-?h-0h-!h-gg-g-Yg-Mg-Cg-#g-g-f-f-f}=f-f-f-f-f-zf-jfk-Sfu-Bfe=e-e=e-ev=_e-Ue-Me-:e-.e-e}=e-e-d-d-d-d-d-d-d-xd-gd-Fd-*d-d- d-c}=c-c-c-c-c-c-ck-rcu-acc=c-b=b-bv=bB-ybW-3b-)b-!b-b-b-a}=a-a-a-a-a-a-ya-_a-=a=/a=(a-a- a}=a-`-`-`-`-`-`k-`u-q`)`="`-`=_-_v=_=n_-d_-\_-I_-=_--_}=!_-_-^-^-^-^-^-^-^-^-|^-p^-]^-J^-7^A-/^-#^-^-]-]-]=]-]-]-]-o]-Q]-7]-']-]- ]}=]-\-\-\-\-\-\k-\u-q\)\="\-\=[-[v=[-[-}[-j[-^[-N[}=B[-6[-[-Z-Z-Z-Z-Z-ZB-ZW-Z-Z-oZ-NZ-2Z-(Z-Z- Z}=Z-Y-Y-Y-Y-Y-Yk-Yu-qY)Y="Y-Y=X-Xv=sX-iX-aX-NX-BX-2X}=&X-X-W-W-W-W-W-W-}W=oW=hW-\W-LW}=EW-9W-W-W-V-V-Vk-Vu-ViV=bV-DV=.V-Vv=U-U-U-U-U-U}=U-wU-FU-4U-*U-U-U-T-T-T-]T-JT-/T-&T-T-T- T-S-SS-S-S-S-S-!S-S-R-R-R-R-RRR-eR-VR-GR-QQ-Q-zQ-nQ-XQ=QQ-GQ-;Q-Q-Q-P-P-P}=P-P-P-P-P-zP-jPk-SPu-BPO=O-O=O-Ov=WO=IO-?O-7O-$O-O-O}=N-N-N-N-N-N-N-uN-lN-YN-FND->N-+N- N-M=M-M-M-M-xM-^M-GM-;M-+M}=$M-M-L-L-L-L-Lk-Lu-LIL=BL-$L=L-Kv=K-K-K-K-K-oK}=cK-WK-&K-K- K-J-J-J-JB-JW-J-J-JJ-oJ-TJ-DJ-:J-)J- J-I-I-I-I}=I-I-I-I-vI-iI-YIk-BIu-1IH=H-H=H-Hv=NH-DH-G-G-F-F-F-F-F-F-{F}=tF-hF->F-/F-&F-F- Fk-Eu-EE=E-tE=^E-@Ev=E-D-D-D-D-D}=D-D-uD-cD-YD-MD-ED-(D-D-D-C-yC-^C-UC-IC-=C-8C-,C-"CC-C-CB-B-B-B-B-B-A-A-A-A-A-AAA-]A-NA-?A-@@-@-H@-<@-2@-&@-@-?-?-?-?-?-?-f?-Y?-H?-->->->->k->u->J>=C>-$>=>-=v=m==Y=-,=-<-<-<-<-<-<-p<-a<-I<-*<-<-<-<-;-;-;-;-;-;-x;-p;-];-Q;-A;}=5;-);-:-:-:-:-:-:-h:-\:-L:}=E:-9:-:-:-9-9-9k-9u-9i9=b9-D9=.9-9v=8-8-8-8-8-8}=8-8-Q8-?8-58-)8-8-7-7-7-7}=7-7-7-p7-g7-Z7-J7k-27u-!76=6-6=6-6v==6-6- 6-6-5-51-5~5-5-5-51-}5~g5-b5-\5-T5-I5-%51-5~3~z3-M3-@3-,3%3-33-3-22-2-22-222-22->2-12-"22- 22-111R-1T-k1-c1-T1-I1-0-0-s0-W0-J0?010-0/-/-/-/-/-///-^/S/-I/-:/-+/-/-/..-..-.-.-.-4.).----------}--s--d--U--9--,-!---,,-,-,-,-U,J,-,,-,-+-+-++-N+-2+-%++ +-**-*-*-*-P*E*-* *-)-)-)-))-)Z-(-(-(-(-(-D'-5'-&'-&&-&-&-&-&-&&q&-6&+&-!&-&-&-%-%%%-%{%-l%-Y%-=%-0%%%%-$$-$-$-$-S$H$- $$-#-#-###-#t#-j#-[#-##-#-"-"-"-"""-k"`"-V"-G"-8"-"-""!-!!-!-!-!-o!-b!W!I!-!!- -   -x V-h1-2-(- ---}=-----z-r-X-O-:-.--=---i-\-F=?-53--- --7---}=-y-O-@-7-*-k-u-=-=n-Pv=-----}=---|-r-f-^-D-P-2-F-X-Q-2-=I-[-w-k-[}=T-H-----k-u-y=r-T=>- v=-----w}=k-_-.----------A---a-B-8-.------}=--n-_-V-I-9k-"u-=-=-pv=-----}=--}-k-a-U-M-3-*5-"C--------y-f-E-&- ----_=X-F-6--------u-k-X-L-<}=5-)-----k-u-Y=R-4=-v= - - - - - }=v -j -9 -! - - - - - = - - - - - -w -h -Y -> -1 -$ - - - - - - - - - -~ -o -` -E -8 -+ - - - - - - - - - - -v -` -T -H -< -0 -$ - - - 1- - - }=} -q -G -2 -& - -k-u-=-e=H-*v=---}=R-@-4}=--%-==-----}=--E-3-)-----a-^-Y-`-/--v-j-Z}=S-G-- ---k--u-`=Y-7=!-v=-~----~- -P-A=:-2"+- =- !{mnoxlph`pXqPx@8|0( vvystyh`zXP=H;@:8%0)(* &+,'(-.?@JGM$_ixph#`fXgPH@80c( \jw      x p ` @ 8 0       ` @   `@ `XP@ xp`XP@ `XP@80 `@ `XP@80 `XP@ xp`@80 `@ M 201D0g0/1؇1,0T0tH1H0X0h0x.2Ȋy0A002h1n1X00.0P11[151܏/x!"`}1"10c0''-vxJ$py 0y?(x x`yv$@y  y yfxx:'`pU pOIoP&<X E+ 6 lH%;%;y`7 G+yO<`3L108 b =P6%P<[` kPvKs(t `b`= @O@bX!_jUP2_1*PO 1 peX@ )=`H)v 'a  (<p35ap55" v vO!{#@~$}}{`{8*Pz@N,  X// V. 0 . @ . -  . Hu- p;zTyw'`5': )/x5\ (*"+z)%#"y "# v/ *XK&&^sY   di 1   !o!!H }w#B#  0 ^# ,z{(8)*%B+%;w6,!6,,+l$%'WcQk1(n((''O\2(##O___glewBeginQuery___glewEndQuery_memcpy__ZN14vtkInformation6RemoveEP24vtkInformationIntegerKey__GLOBAL__sub_I_vtkDualDepthPeelingPass.cxx__ZN26vtkOpenGLFramebufferObject10SetContextEP15vtkRenderWindow__ZN16vtkTextureObject10SetContextEP21vtkOpenGLRenderWindow__ZN23vtkDualDepthPeelingPass24ReleaseGraphicsResourcesEP9vtkWindow_glGetFloatv_glGetIntegerv___glewGetQueryObjectuiv__ZSt9terminatev__ZdlPv__ZNSt3__18ios_base4initEPv__ZN23vtkDualDepthPeelingPass23PeelTranslucentGeometryEv__ZN23vtkDualDepthPeelingPass22PeelVolumetricGeometryEv__ZN23vtkDualDepthPeelingPass30StartTranslucentOcclusionQueryEv__ZN23vtkDualDepthPeelingPass28EndTranslucentOcclusionQueryEv__ZN23vtkDualDepthPeelingPass24InitializeOcclusionQueryEv__ZN23vtkDualDepthPeelingPass29StartVolumetricOcclusionQueryEv__ZN23vtkDualDepthPeelingPass27EndVolumetricOcclusionQueryEv__ZNK14vtkRenderState12GetPropArrayEv__ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5uflowEv__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9underflowEv__ZN26vtkOpenGLVertexArrayObject3NewEv__ZN26vtkOpenGLFramebufferObject3NewEv__ZN21vtkOpenGLBufferObject3NewEv__ZN16vtkTextureObject3NewEv__ZN23vtkDualDepthPeelingPass3NewEv__ZN14vtkInformation3NewEv__ZN23vtkDualDepthPeelingPass25SwapFrontBufferSourceDestEv__ZN23vtkDualDepthPeelingPass25SwapDepthBufferSourceDestEv__ZNK14vtkRenderState17GetPropArrayCountEv__ZN16vtkTextureObject14GetTextureUnitEv__ZN23vtkDualDepthPeelingPass13FreeGLObjectsEv__ZN19vtkDepthPeelingPass18GetTranslucentPassEv__ZN23vtkDualDepthPeelingPass35InitializeTargetsForTranslucentPassEv__ZN23vtkDualDepthPeelingPass21RenderTranslucentPassEv__ZN23vtkDualDepthPeelingPass17GetVolumetricPassEv__ZN23vtkDualDepthPeelingPass34InitializeTargetsForVolumetricPassEv__ZN23vtkDualDepthPeelingPass20RenderVolumetricPassEv__ZN19vtkOpenGLRenderPass20GetActiveDrawBuffersEv__ZN26vtkOpenGLFramebufferObject21DeactivateDrawBuffersEv__ZN13vtkRenderPass24GetNumberOfRenderedPropsEv__ZN19vtkDepthPeelingPass23GetMaximumNumberOfPeelsEv__ZN23vtkDualDepthPeelingPass18IsRenderingVolumesEv__ZN23vtkDualDepthPeelingPass23DeleteOcclusionQueryIdsEv__ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv__ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv__ZNK14vtkRenderState11GetRendererEv__ZN23vtkDualDepthPeelingPass15BlendBackBufferEv__ZN23vtkDualDepthPeelingPass21CopyOpaqueDepthBufferEv__ZNK14vtkRenderState14GetFrameBufferEv__ZN23vtkDualDepthPeelingPass16AlphaBlendRenderEv__ZN24vtkOpenGLRenderUtilities31GetFullScreenQuadGeometryShaderEv__ZN24vtkOpenGLRenderUtilities29GetFullScreenQuadVertexShaderEv__ZN17vtkRenderTimerLog17ScopedEventLogger4StopEv__ZN19vtkDepthPeelingPass17GetOcclusionRatioEv__ZN23vtkDualDepthPeelingPass21ClearFrontDestinationEv__ZN23vtkDualDepthPeelingPass33CopyFrontSourceToFrontDestinationEv__ZN23vtkDualDepthPeelingPass23PrepareFrontDestinationEv__ZN9vtkObject7DebugOnEv__ZN23vtkDualDepthPeelingPass4PeelEv__ZNK23vtkDualDepthPeelingPass20GetClassNameInternalEv__ZNK23vtkDualDepthPeelingPass19NewInstanceInternalEv__ZN23vtkDualDepthPeelingPass15InitializeDepthEv__ZN9vtkObject8DebugOffEv__ZN23vtkDualDepthPeelingPass8FinalizeEv__ZN19vtkDepthPeelingPass25GetOcclusionRatioMaxValueEv__ZN19vtkDepthPeelingPass25GetOcclusionRatioMinValueEv__ZN13vtkObjectBase10FastDeleteEv__ZN13vtkObjectBase6DeleteEv__ZN16vtkTextureObject10DeactivateEv__ZN16vtkTextureObject8ActivateEv__ZN24vtkOpenGLRenderUtilities39GetFullScreenQuadFragmentShaderTemplateEv__ZN26vtkOpenGLVertexArrayObject7ReleaseEv__ZN13vtkObjectBase20InitializeObjectBaseEv__ZN23vtkDualDepthPeelingPass7PrepareEv__ZN23vtkDualDepthPeelingPass11PeelingDoneEv__ZN9vtkObject8GetMTimeEv__ZN23vtkDualDepthPeelingPass19GetShaderStageMTimeEv__ZN23vtkDualDepthPeelingPass34PeelVolumesOutsideTranslucentRangeEv__ZN23vtkDualDepthPeelingPass15BlendFinalImageEv__ZN14vtkOpenGLActor19GLDepthMaskOverrideEv__ZN26vtkOpenGLVertexArrayObject4BindEv__ZN9vtkObject8ModifiedEv__ZN12vtkTimeStamp8ModifiedEv__ZN24vtkOpenGLRenderUtilities18DrawFullScreenQuadEv__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9showmanycEv__ZNKSt3__18ios_base6getlocEv__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4syncEv__ZN23vtkDualDepthPeelingPassD2Ev__ZN19vtkDepthPeelingPassD2Ev__ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED2Ev__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev__ZN23vtkDualDepthPeelingPassC2Ev__ZN19vtkDepthPeelingPassC2Ev__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev__ZN23vtkDualDepthPeelingPassD1Ev__ZN20vtkDebugLeaksManagerD1Ev__ZN31vtkObjectFactoryRegistryCleanupD1Ev__ZNSt3__16localeD1Ev__ZTv0_n24_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev__ZTv0_n24_NSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev__ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev__ZN23vtkDualDepthPeelingPassC1Ev__ZN20vtkDebugLeaksManagerC1Ev__ZN31vtkObjectFactoryRegistryCleanupC1Ev__ZN23vtkDualDepthPeelingPassD0Ev__ZTv0_n24_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev__ZTv0_n24_NSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev__ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev_glViewport__ZN13vtkObjectBase12PrintTrailerERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEE9vtkIndent__ZN13vtkObjectBase11PrintHeaderERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEE9vtkIndent__ZN23vtkDualDepthPeelingPass9PrintSelfERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEE9vtkIndent__ZN19vtkDepthPeelingPass9PrintSelfERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEE9vtkIndent___cxa_atexit_memset__ZN23vtkDualDepthPeelingPass30SetTranslucentShaderParametersEP16vtkShaderProgramP17vtkAbstractMapperP7vtkPropP26vtkOpenGLVertexArrayObject__ZN23vtkDualDepthPeelingPass19SetShaderParametersEP16vtkShaderProgramP17vtkAbstractMapperP7vtkPropP26vtkOpenGLVertexArrayObject__ZN23vtkDualDepthPeelingPass29SetVolumetricShaderParametersEP16vtkShaderProgramP17vtkAbstractMapperP7vtkPropP26vtkOpenGLVertexArrayObject__ZN19vtkDepthPeelingPass18SetTranslucentPassEP13vtkRenderPass__ZN23vtkDualDepthPeelingPass17SetVolumetricPassEP13vtkRenderPass__ZTV23vtkDualDepthPeelingPass__ZTS23vtkDualDepthPeelingPass__ZTI23vtkDualDepthPeelingPass__ZTI19vtkDepthPeelingPass___glewGenQueries___glewDeleteQueries__ZN13vtkObjectBase16ReportReferencesEP19vtkGarbageCollector_glClearColor_glClear__ZN23vtkDualDepthPeelingPass34PostReplaceTranslucentShaderValuesERNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES7_S7_P17vtkAbstractMapperP7vtkProp__ZN23vtkDualDepthPeelingPass23PostReplaceShaderValuesERNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES7_S7_P17vtkAbstractMapperP7vtkProp__ZN23vtkDualDepthPeelingPass22PreReplaceShaderValuesERNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES7_S7_P17vtkAbstractMapperP7vtkProp__ZN23vtkDualDepthPeelingPass32PreReplaceVolumetricShaderValuesERNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES7_S7_P17vtkAbstractMapperP7vtkProp_strcmp___glewBlendEquation__Znwm__ZN24vtkOpenGLRenderUtilities17PrepFullScreenVAOEP21vtkOpenGLBufferObjectP26vtkOpenGLVertexArrayObjectP16vtkShaderProgram__ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m__ZN23vtkDualDepthPeelingPass19ActivateDrawBuffersEPKNS_11TextureNameEm___stack_chk_fail__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsgetnEPcl__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6setbufEPcl__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKcl__ZN26vtkOpenGLFramebufferObject18AddColorAttachmentEjjP16vtkTextureObjectj__ZN16vtkTextureObject9SetFormatEj__ZN16vtkTextureObject17SetInternalFormatEj__ZN19vtkOpenGLRenderPass20SetActiveDrawBuffersEj__ZN26vtkOpenGLFramebufferObject19ActivateDrawBuffersEj__ZN26vtkOpenGLFramebufferObject18SaveCurrentBuffersEj__ZN26vtkOpenGLFramebufferObject22RestorePreviousBuffersEj__ZN26vtkOpenGLFramebufferObject19SaveCurrentBindingsEj__ZN26vtkOpenGLFramebufferObject23RestorePreviousBindingsEj__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekoffExNS_8ios_base7seekdirEj__ZNSt3__18ios_base5clearEj__ZN26vtkOpenGLFramebufferObject6UnBindEj__ZN26vtkOpenGLFramebufferObject4BindEj__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekposENS_4fposI11__mbstate_tEEj__ZN14vtkInformation3SetEP24vtkInformationIntegerKeyi__ZN16vtkTextureObject13AllocateDepthEjji__ZN16vtkTextureObject10Allocate2DEjjii__ZN16vtkTextureObject19CopyFromFrameBufferEiiiiii__ZN9vtkObject18UnRegisterInternalEP13vtkObjectBasei__ZN9vtkObject16RegisterInternalEP13vtkObjectBasei__ZN16vtkShaderProgram11SetUniformiEPKci__ZNK14vtkRenderState13GetWindowSizeEPi__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE8overflowEi__ZN19vtkDepthPeelingPass14SetDepthFormatEi__ZN19vtkDepthPeelingPass23SetMaximumNumberOfPeelsEi__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9pbackfailEi___cxa_begin_catch___cxa_end_catch__ZN16vtkShaderProgram11SetUniformfEPKcf__ZN23vtkDualDepthPeelingPass16InitColorTextureEP16vtkTextureObjectPK14vtkRenderState__ZN23vtkDualDepthPeelingPass16InitDepthTextureEP16vtkTextureObjectPK14vtkRenderState__ZN23vtkDualDepthPeelingPass22InitOpaqueDepthTextureEP16vtkTextureObjectPK14vtkRenderState__ZN23vtkDualDepthPeelingPass15InitFramebufferEPK14vtkRenderState__ZN19vtkOpenGLRenderPass10PostRenderEPK14vtkRenderState__ZN19vtkOpenGLRenderPass9PreRenderEPK14vtkRenderState__ZN23vtkDualDepthPeelingPass6RenderEPK14vtkRenderState__ZN23vtkDualDepthPeelingPass10InitializeEPK14vtkRenderState___clang_call_terminate__Unwind_Resume___dso_handle_glDisable_glEnable__ZL28vtkDebugLeaksManagerInstance__ZL39vtkObjectFactoryRegistryCleanupInstance_glCullFace___stack_chk_guard_glIsEnabled__ZN19vtkDepthPeelingPass17SetOcclusionRatioEd_glBlendFunc__ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEmc__ZN23vtkDualDepthPeelingPass8IsTypeOfEPKc__ZN13vtkObjectBase8IsTypeOfEPKc__ZN23vtkDualDepthPeelingPass3IsAEPKc__ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc__ZN16vtkShaderProgram10SubstituteERNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEERKS6_S9_b__ZN13vtkObjectBase10UnRegisterEPS___ZN13vtkObjectBase8RegisterEPS___ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4___ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3___ZN17vtkRenderTimerLog17ScopedEventLoggeraSEOS0___ZTVN10__cxxabiv120__si_class_type_infoE__ZN23vtkDualDepthPeelingPass18SetCurrentPeelTypeENS_8PeelTypeE__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5imbueERKNS_6localeE__ZN23vtkDualDepthPeelingPass15SetCurrentStageENS_11ShaderStageE__ZNKSt3__16locale9use_facetERNS0_2idE__ZNSt3__15ctypeIcE2idE__ZTCNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_ostreamIcS2_EE__ZTINSt3__113basic_ostreamIcNS_11char_traitsIcEEEE__ZTINSt3__115basic_streambufIcNS_11char_traitsIcEEEE__ZN13vtkObjectBase16CollectRevisionsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEE__ZTVNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE__ZTTNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE__ZTSNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE__ZTINSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE__ZTVNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE__ZTSNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE__ZTINSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE__ZN17vtkRenderTimerLog16StartScopedEventERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEGCC_except_table9GCC_except_table59GCC_except_table39GCC_except_table29GCC_except_table48GCC_except_table38GCC_except_table18GCC_except_table7GCC_except_table37GCC_except_table27GCC_except_table6GCC_except_table46GCC_except_table26GCC_except_table16GCC_except_table85GCC_except_table45GCC_except_table4GCC_except_table84GCC_except_table54GCC_except_table24GCC_except_table53GCC_except_table43GCC_except_table82GCC_except_table52GCC_except_table42GCC_except_table12GCC_except_table51GCC_except_table11___gxx_personality_v0GCC_except_table0GCC_except_table40GCC_except_table30