ELF>b@@*)   !UH@dH%(HD$81HHt$HD$HFHD$$D$ t0H|$1HT$8dH+%(uhH@]@HT$H|$H5|$HtHt+HH5HPtHuH1Huff.fUSHHdH%(HD$81HHt$HD$HFHD$$D$ HD$t6H|$1HT$8dH+%(HH[]DHt$H|$tHl$H=HtHH=uHuHc@HH=tHH=tHH=tHff.UH0fnFdH%(HD$(1HH4$HD$HGfnȉD$fbfD$u=H(HtD$9D$t:H111HT$(dH+%(uVH0]fDHHuӐtHHuH뵐HH0H;tHATUSH@fnFdH%(HD$81HHt$HD$HGfnȉD$(fbfD$ uYHD$Ho(Ht!\$ +\$$tJH|$1HT$8dH+%(H@[]A\HHuːHt$H|$tD$$Ld$u`HELH@H;H=tLH=u-HaHcVf.LLH=tLH=tLH=tLHЉfATH0fnFdH%(HD$(1HH4$HD$HGfnȉD$fbfD$uDH(HtD$9D$tIH11E1HD$(dH+%(H0LA\@HHufHHRxH;IMtoI$H5LPtZHuLIHoHbL1HHP@L8fE1H"DIjfATL%H HH5LuLHLA\ATIUHHt HH5LHtHmtH]A\HH]A\UH0fnFdH%(HD$(1HH4$HD$HGfnȉD$fbfD$u=H(HtD$9D$t:H111HT$(dH+%(ucH0]fDHHuӐu,HHHuHHxHfD@AWAVAUATUHPfnFdH%(HD$H1HHt$ HD$(HGfnȉD$8fbfD$0Ho(Ht7D$0+D$4wOL|$Lt$ LH5L|$IuY1HT$HdH+%(HP]A\A]A^A_@H|$ fHHoDLH5L|$ItLH5L|$HlD$0E19D$8|QD$4u7LMHLLAH3@'DHLLLH5LHL$|$HL$Iff.fAWAVAUATUSHfnFdH%(H$1HHt$0HD$8HGfnȉD$HfbfD$@Ho(H\$`L$HD$XL$H\$PLt$PD$`Ld$pHD$xƄ$L$HDŽ$Ƅ$HD$@+D$DtxH|$0E1H$L9tH|$pL9tH|$PH9tH$dH+%(HL[]A\A]A^A_DL|$0LLtHD$pLHHD$kH$LHHD$KHT$.H5L|$.HD$'HT$/H5L|$/ID$DLULD$LHHL$HT$AHHHt}H@IfDHHH\$`D$`H\$PHD$XE1LD$HL$LHHT$\HT$LlfHT$LBfL1LHff.fAWAVAUATUSHfnFdH%(H$1HHt$0HD$8HGfnȉD$HfbfD$@Ho(H\$`L$HD$XL$H\$PLt$PD$`Ld$pHD$xƄ$L$HDŽ$Ƅ$HD$@+D$DtxH|$0E1H$L9tH|$pL9tH|$PH9tH$dH+%(HL[]A\A]A^A_DL|$0LLtHD$pLHHD$kH$LHHD$KHT$.H5L|$.HD$'HT$/H5L|$/ID$DLULD$LHHL$HT$AHHHt}H@IfDHHH\$`D$`H\$PHD$XE1LD$HL$LHHT$\HT$LlfHT$LBfL1LHff.fUH@fnFdH%(HD$81HHt$HD$HGfnȉD$(fbfD$ uLHo(Ht!D$ +D$$tFH|$1HT$8dH+%(uzH@]f.HHuϐH5HT$H|$|$HtD$$u(HEH8HuHH@HUH@fnFdH%(HD$81HHt$HD$HGfnȉD$(fbfD$ uLHo(Ht!D$ +D$$tFH|$1HT$8dH+%(uzH@]f.HHuϐH5HT$H|$|$HtD$$u(HEHHuHH@HHSafeDownCastvtkObjectBasevtkDualDepthPeelingPassIsTypeOfGetVolumetricPassIsANewInstanceGetShaderStageMTimeSetShaderParametersvtkShaderProgramvtkAbstractMappervtkPropvtkOpenGLVertexArrayObjectPostReplaceShaderValuesPreReplaceShaderValuesSetVolumetricPassReleaseGraphicsResourcesvtkWindowHHvtkDepthPeelingPassvtkOpenGLRenderPassvtkRenderPassvtkObjectUH=Hu]ÐHH=tHH=tHH=tHH=tH]vtkDualDepthPeelingPass - Implements the dual depth peeling algorithm. Superclass: vtkDepthPeelingPass Dual depth peeling is an augmentatation of the standard depth peeling algorithm that peels two layers (front and back) for each render pass. The technique is described in "Order independent transparency with dual depth peeling" (February 2008) by L. Bavoil, K. Myers. This algorithm has been extended to also peel volumetric data along with translucent geometry. To use this feature, set VolumetricPass to an appropriate RenderPass (usually vtkVolumetricPass). The pass occurs in several stages: 1. Copy the current (opaque geometry) depth buffer into a texture. 2. Initialize the min-max depth buffer from the opaque depth texture and the translucent geometry. 3. Peel the nearest and farthest fragments: 3a. Blend fragments that match the nearest depth of the min-max depth buffer into the front buffer. 3b. Write the far depth fragments into a temporary buffer. 3c. Extract the next set of min/max depth values for the next peel. 3d. Blend the temporary far fragment texture (3b) into an accumulation texture. 3e. Go back to 3a and repeat until the maximum number of peels is met, or the desired occlusion ratio is satisfied. 4. If the occlusion ratio != 0 (i.e. we hit the maximum number of peels before finishing), alpha blend the remaining fragments in-between the near and far accumulation textures. 5. Blend all accumulation buffers over the opaque color buffer to produce the final image. vtkRenderingOpenGL2Python.vtkDualDepthPeelingPassV.IsTypeOf(string) -> int C++: static vtkTypeBool IsTypeOf(const char *type) Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h. V.IsA(string) -> int C++: vtkTypeBool IsA(const char *type) override; Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h. V.SafeDownCast(vtkObjectBase) -> vtkDualDepthPeelingPass C++: static vtkDualDepthPeelingPass *SafeDownCast( vtkObjectBase *o) V.NewInstance() -> vtkDualDepthPeelingPass C++: vtkDualDepthPeelingPass *NewInstance() V.ReleaseGraphicsResources(vtkWindow) C++: void ReleaseGraphicsResources(vtkWindow *w) override; Release graphics resources and ask components to release their own resources. \pre w_exists: w!=0 V.GetVolumetricPass() -> vtkRenderPass C++: virtual vtkRenderPass *GetVolumetricPass() Delegate for rendering the volumetric geometry, if needed. It is usually set to a vtkVolumetricPass. Initial value is a NULL pointer. V.SetVolumetricPass(vtkRenderPass) C++: virtual void SetVolumetricPass(vtkRenderPass *volumetricPass) Delegate for rendering the volumetric geometry, if needed. It is usually set to a vtkVolumetricPass. Initial value is a NULL pointer. V.PreReplaceShaderValues(string, string, string, vtkAbstractMapper, vtkProp) -> bool C++: bool PreReplaceShaderValues(std::string &vertexShader, std::string &geometryShader, std::string &fragmentShader, vtkAbstractMapper *mapper, vtkProp *prop) override; Use vtkShaderProgram::Substitute to replace //VTK::XXX:YYY declarations in the shader sources. Gets called before other mapper shader replacments Return false on error. V.PostReplaceShaderValues(string, string, string, vtkAbstractMapper, vtkProp) -> bool C++: bool PostReplaceShaderValues(std::string &vertexShader, std::string &geometryShader, std::string &fragmentShader, vtkAbstractMapper *mapper, vtkProp *prop) override; Use vtkShaderProgram::Substitute to replace //VTK::XXX:YYY declarations in the shader sources. Gets called after other mapper shader replacements. Return false on error. V.SetShaderParameters(vtkShaderProgram, vtkAbstractMapper, vtkProp, vtkOpenGLVertexArrayObject) -> bool C++: bool SetShaderParameters(vtkShaderProgram *program, vtkAbstractMapper *mapper, vtkProp *prop, vtkOpenGLVertexArrayObject *VAO=nullptr) override; Update the uniforms of the shader program. Return false on error. V.GetShaderStageMTime() -> int C++: vtkMTimeType GetShaderStageMTime() override; For multi-stage render passes that need to change shader code during a single pass, use this method to notify a mapper that the shader needs to be rebuilt (rather than reuse the last cached shader. This method should return the last time that the shader stage changed, or 0 if the shader is single-stage. ATL%UH-HHH=LHH=LH5HHH]A\H$L9tH|$pL9tH|$PH9tHH$L9tH|$pL9tH|$PH9tHX3X3HDGCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0GNUzRx  0 D XEDPa AE zPLRx $HIuEY B P("EAD`n AAF ED@ AG 0(FAA D`  AABH \gFD@ EE MFF0OFDD n ABA DDB$dFHN DAB ED@ AG @FBB B(A0D 0A(B BBBE P#FBB B(A0A8G0 8D0A(B BBBF <8P`#FBB B(A0A8G0 8D0A(B BBBF 8 PEDP AK $tEDP AK      +c" g:^d  Bp #8  #N88   % 3*/4(96> <C NH RN ^T rZ ` f l r x ~   &" " Fk"! 3^""u5K]sM`O +8Vt    q   f u     ) < T l     _ZL35PyvtkDualDepthPeelingPass_StaticNewv_ZL38PyvtkDualDepthPeelingPass_SafeDownCastP7_objectS0__ZL34PyvtkDualDepthPeelingPass_IsTypeOfP7_objectS0__ZL43PyvtkDualDepthPeelingPass_GetVolumetricPassP7_objectS0__ZL29PyvtkDualDepthPeelingPass_IsAP7_objectS0__ZL37PyvtkDualDepthPeelingPass_NewInstanceP7_objectS0__ZL30PyvtkDualDepthPeelingPass_Type_ZL33PyvtkDualDepthPeelingPass_Methods_GLOBAL__sub_I_vtkDualDepthPeelingPassPython.cxx_ZL28vtkDebugLeaksManagerInstance_ZL37vtkRenderingOpenGL2_AutoInit_Instance_ZL45PyvtkDualDepthPeelingPass_GetShaderStageMTimeP7_objectS0__ZL45PyvtkDualDepthPeelingPass_SetShaderParametersP7_objectS0__ZL49PyvtkDualDepthPeelingPass_PostReplaceShaderValuesP7_objectS0__ZL49PyvtkDualDepthPeelingPass_PostReplaceShaderValuesP7_objectS0_.cold_ZL48PyvtkDualDepthPeelingPass_PreReplaceShaderValuesP7_objectS0__ZL48PyvtkDualDepthPeelingPass_PreReplaceShaderValuesP7_objectS0_.cold_ZL43PyvtkDualDepthPeelingPass_SetVolumetricPassP7_objectS0__ZL50PyvtkDualDepthPeelingPass_ReleaseGraphicsResourcesP7_objectS0_.LC0.LC1.LC2.LC7.LC3.LC4.LC5.LC6.LC8.LC9.LC10.LC12.LC13.LC14.LC15.LC16.LC17.LC18.LC20.LC22.LC23.LC24.LC11_ZN28vtkRenderingOpenGL2_AutoInitD5Ev_ZN23vtkDualDepthPeelingPass17GetVolumetricPassEv_ZN23vtkDualDepthPeelingPass3NewEv_ZNK23vtkDualDepthPeelingPass19NewInstanceInternalEv_ZN13vtkPythonArgs13ArgCountErrorEii_ZN13vtkPythonArgs17GetArgAsVTKObjectEPKcRbPyErr_Occurred_ZN13vtkPythonUtil20GetObjectFromPointerEP13vtkObjectBase__stack_chk_fail_ZN28vtkRenderingOpenGL2_AutoInitD2EvDW.ref.__gxx_personality_v0_Z37vtkRenderingOpenGL2_AutoInit_Destructv_ZN28vtkRenderingOpenGL2_AutoInitD1Ev_ZN23vtkDualDepthPeelingPass3IsAEPKcstrcmp_ZN13vtkObjectBase8IsTypeOfEPKc_ZN13vtkPythonArgs8GetValueERPcPyLong_FromLong_ZN13vtkPythonArgs19GetSelfFromFirstArgEP7_objectS1__GLOBAL_OFFSET_TABLE_PyVTKObject_CheckPyVTKObject_GetObjectPyVTKObject_SetFlagPyvtkDualDepthPeelingPass_ClassNewPyVTKClass_AddPyvtkDepthPeelingPass_ClassNewPyType_ReadyPyVTKAddFile_vtkDualDepthPeelingPassPyDict_SetItemString_Py_Dealloc__dso_handle_ZN20vtkDebugLeaksManagerC1Ev_ZN20vtkDebugLeaksManagerD1Ev__cxa_atexit_Z38vtkRenderingOpenGL2_AutoInit_Constructv_ZN23vtkDualDepthPeelingPass19GetShaderStageMTimeEvPyLong_FromUnsignedLongPyBool_FromLong_ZN23vtkDualDepthPeelingPass19SetShaderParametersEP16vtkShaderProgramP17vtkAbstractMapperP7vtkPropP26vtkOpenGLVertexArrayObject_ZdlPv_ZN13vtkPythonArgs8GetValueERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE_ZN23vtkDualDepthPeelingPass23PostReplaceShaderValuesERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S6_P17vtkAbstractMapperP7vtkProp_ZN13vtkPythonArgs11SetArgValueEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE_Unwind_Resume_ZN23vtkDualDepthPeelingPass22PreReplaceShaderValuesERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S6_P17vtkAbstractMapperP7vtkProp_Py_NoneStruct_ZN23vtkDualDepthPeelingPass17SetVolumetricPassEP13vtkRenderPass_ZN23vtkDualDepthPeelingPass24ReleaseGraphicsResourcesEP9vtkWindowPyType_TypePyVTKObject_DeletePyVTKObject_ReprPyVTKObject_StringPyObject_GenericGetAttrPyObject_GenericSetAttrPyVTKObject_AsBufferPyVTKObject_TraversePyVTKObject_GetSetPyVTKObject_NewPyObject_GC_Del,#`>$?%@A@B &J>}K%I'I@L(I)I*IJBA+>M@A*;B$,>MK*H%I'I@-LN(SIa)fIt*yIJB->9MZ*=e<x%@AOPQ@B!'%."6S<!DTN!SUoR~%W.>AMa@sL^_B/)01?x>M1?2? @ `* a8 3E ?_ B 4` >u b b b c c c! 1) ?E 2M ? @ @ @ @ ` M& d> e^ ey e B 5 > b b bcc=cQ1Y?u2}?@@@@` MVgneeeB6J>qM)?@*hiB7Z>M8?@*hjB<X 4< E%I&'+I9(>IL)QI_*dIqJ YZ$*[/\4];*GEJ\Q9X!bb,b4fFbUbdblfk0lXmnopqrs8t@u3@ N(8H@HX@`Rhx ( <     p x r(88@^HXF 4H\D    ,`` dp m 0894Tx.symtab.strtab.shstrtab.rela.text.data.bss.text._ZN23vtkDualDepthPeelingPass17GetVolumetricPassEv.rela.text._ZNK23vtkDualDepthPeelingPass19NewInstanceInternalEv.rodata.str1.1.rela.text._ZN28vtkRenderingOpenGL2_AutoInitD2Ev.gcc_except_table._ZN28vtkRenderingOpenGL2_AutoInitD2Ev.rodata._ZN23vtkDualDepthPeelingPass3IsAEPKc.str1.1.rela.text._ZN23vtkDualDepthPeelingPass3IsAEPKc.rodata.str1.8.rela.text.startup.rela.init_array.rela.text.unlikely.gcc_except_table.rela.data.rel.rela.data.rel.local.rela.data.rel.local.DW.ref.__gxx_personality_v0.comment.note.GNU-stack.note.gnu.property.rela.eh_frame.groupn@';nH '=nT':nd 'Hnp 'D @F'&o,o1p n i@xV' 20@V'!2@Z uU@V'2 &d@W''@X' 'p@X''<' @Y ') @Z'+@]' 30+,<4+L8+ dX+_@]'%. (; : h`u