bplist00 -.;<=[descriptionYprotocols_frameworkVersion_editorViewerForceClear^portAttributes_editorViewerWindow_inputParameters[aspectRatio^virtualPatchesYrootPatchYcopyrightTname_Mandelbrot Explorer with user control via video input (iSight required). Demonstrates interaction without touching the mouse or keyboard._-com.apple.QuartzComposer.protocol.screensaverX{156.30}!$'_Show_Live_Video_PinPYSmoothing_Mirror_Image_Video_Time_between_Recalcs_Video_Unavail_Message_TextW_enable_Cascaded_Iterator _The input port.UInput _The first Boolean value.]First Operand  "#_%Initial value to apply operations on.]Initial Value %&_The text string to render.VString()*+Tname[descriptionVEnable_ Controls execution of the patch. _234 184 1686 994 0 0 1920 1178 /0123367893RciTsizeRcr#+  #?PbM#vȴ9X#@_video input unavailable "?9>?@AUclassUstateWQCPatchBCDEFG`a[connectionsXtimebase_publishedInputPortsXuserInfoUnodesSHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !$%&),-/1568:;=?ABCEFHIJKMNPQRSTUVZ[\^]connection_17]connection_24]connection_31]connection_19]connection_26]connection_33]connection_28]connection_35]connection_42]connection_37]connection_44]connection_51]connection_46]connection_53]connection_60]connection_55]connection_62]connection_40]connection_71]connection_57]connection_48]connection_80\connection_4]connection_59]connection_68]connection_75]connection_66\connection_8]connection_77]connection_82]connection_79]connection_39]connection_73]connection_64\connection_1]connection_10\connection_5]connection_12]connection_14]connection_21\connection_9]connection_16]connection_23]connection_30]connection_32]connection_18]connection_25]connection_41]connection_27]connection_34]connection_29]connection_36]connection_43]connection_52]connection_45]connection_50]connection_61]connection_54]connection_47]connection_56]connection_49]connection_70]connection_65]connection_72\connection_2]connection_81]connection_67\connection_6]connection_69]connection_58]connection_63]connection_78]connection_74]connection_76]connection_83]connection_38\connection_3]connection_11\connection_7]connection_20]connection_13]connection_15]connection_22ZsourceNode_destinationPortZsourcePort_destinationNodeVMath_1]inputDuration[outputValue_Interpolation_1_ImageAccumulator_1ZinputImage[outputImage\ImagePixel_1[SpotColor_1[outputImage]ColorInvert_1]ImageKernel_2_initial_state_vector_matrix[outputImageWPatch_4]ImageResize_2[outputImageZSplitter_1[Pixels_WideVoutputWPatch_5[TextImage_1[outputImageXSprite_4ZSplitter_4ZinputWidthXSprite_1ZSplitter_6XSprite_6]ImageKernel_3]ImageResize_4XSprite_3Xsource_1]Multiplexer_2ZSplitter_7UinputZSplitter_8ZinputWidthZinputWidth\ImagePixel_2\FPSDisplay_1ZSplitter_9Yoperand_1VMath_4VMath_3[inputHeightXsource_0_outputImage_proxy_1]Multiplexer_1_DifferentialValue_integrator_1Qa[outputValue\Expression_2YInit__Run[outputValue_inputDirtyHeight]ImageLoader_2[outputImageXSprite_8ZinputValue\outputResult[inputNumber_NumberFormatter_1WPatch_2Uimage[TextImage_5YSprite_10XSprite_9Qb[outputGreenZSplitter_5_NumberFormatter_3  [TextImage_3XSprite_7 ]ImageKernel_1[TextImage_2[Billboard_1ZSplitter_3 [mod_vectorsUWidthWPatch_3VOutput]GammaAdjust_1_NumberFormatter_2XSprite_5 "#\Expression_1_Flip_Horizontal'([inputString\outputString*+ZSplitter_2[Pixels_High.[inputHeight0XSprite_2234WLogic_3ZinputIndex\outputResult7Xsource_09_inputDirtyWidth*<34WLogic_2>ZinputValue@Xsource_1>'( D[TextImage_4G\Expression_3 L[inputHeightO_NumberFormatter_4'(DO'(G0WXY\ScreenInfo_2ZinputScale[outputWidth*+]4"WLogic_1*_VHeightVparentbimptx{~?cdef 1hTnodeSkeyTportEgOm streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namecrRcr?cdej /lEkOm streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameciRci?cden 00EoOo streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameSize?cdeqsErO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameVideo Unavail Message Text_Error_message_text?cdeu]wEvO} streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameMirror Image Video[inputValue1?cdeyEzO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameShow Live Video P-in-P?cde|>E}O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameTime between Recalcs?cde<wEO| streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameCascaded Iterator?cde2wEOt streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name SmoothingO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+noteListNSMutableArrayNSArray boundsNSValue* {CGRect={CGPoint=dd}{CGSize=dd}}V!stringDLive User Input -- Computer vision for hands-free control of zoomingcolorNSColorcffff?L?ff&?33s? ?How to control zoom: Use 0.25-0.75 hysteresis to convert input squares to a boolean ; desired zoom rate = (InButton - OutButton) ; Integrate over time to create a "current zoom" ; if current zoom is above max, disable further zoomingboundsLRiUser Option - time betw recalc?L?! hMassively parallel SIMD Mandelbrot calculation pipelines - One for older GPU cards, one for faster cards?05tGenerate two arrays of 4-component vectors used as inputs and working variables to the pixels in the render pipeline?\User Option - cascaded iterator?L?5These might need to be variable to handle different GPU environments - mine seems to limit textures to 2^20 pixels, so older cards might have smaller limits33s?ff&?ff&?Y VUser Option - Smoothing : will be more relevant if/when we implement DEM/M calculation?L??Typical Dataflow Spaghettibounds 8;2 scrolling {CGPoint=dd}:@ zoomFactorNSNumberf>r}Z")G\glqvz)A_cl>?dWQCClearE33_ivarInputPortStates_clearColorBuffer_systemInputPortStates_clearDepthBufferZinputColorUvalueSredUalphaTblueUgreen##?## 3 O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd} WClear_1>?d[QCBillboardE[CIRendering_optimizedRenderingXsizeModeWversion\pixelAlignedVinputYZinputColor]inputRotation]inputBlendingVinputX_inputPixelAligned#?#?ɢ#?#?#?Zu`##ZautoHeight3 O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Program TitlepositionNSValue* {CGPoint=dd}9>?d_QCInterpolationCE`_customInputPortStates[inputValue2[inputValue1[inputRepeat\inputTension##?#_inputInterpolationO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namerepeating sinewavepositionNSValue* {CGPoint=dd}>?dqWQCPatchBCEF`uKqoH_ColorFromComponents_rgb_1[outputColor[Billboard_2W"\outputHeight"W_outputPixelsWide_Interpolation_2ZinputAlphaWXY3 O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ zoomFactorNSNumberNSValue*f scrolling {CGPoint=dd}@positionnameCredits#5AJPa>?d[QCTextImageE "_verticalAlignmentXfontSize_horizontalAlignment\manualLayoutXfontNameXCentered#?t"'  ^inputGlyphSize]inputFontName\inputLeading\inputKerningZinputWidth[inputHeight #?t" oGLMZ, 2010-2011 Robert Munafo VFutura###@=/c#\inputKerning^inputGlyphSize\inputLeadingZinputWidth[inputHeight O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}>?d$%[QCBillboardE&03'(*,)#+#13 O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}X>?d67]QCImageResizeE89O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}:;<>@^inputConditionYinputMode=x?>?dBC"\QCExpressionEDEFGZexpressionO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name"a * b"positionNSValue* {CGPoint=dd}Ua * bHI#>?dKLW\QCScreenInfoEMN3]cleanApertureO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}? >?dQR_QCInterpolationCES`]`TVXZ[U#W#@(Y#??\#^_ O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd} 9?d>bcopZidentifierEdeO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}QfghikmVinput1Vinput3Vinput2j#?l#?n#?_QCColorFromComponentsSrgbWPatch_1>?dst]WQCLogicEuvO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}l2wxy{^inputOperation[inputValue2z>?d~"\QCExpressionEDO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name"a ? 0.0 : 1.0"positionNSValue* {CGPoint=dd}9]a ? 0.0 : 1.0>?dVQCMathE_numberOfOperations^operationCount[operation_1Yoperand_1#?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}?d>bE??YhasBypass]filterVersion_normalizeCoordinates\wrappingMode]filteringModeZinputPower#?XBilinearO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}]QCImageFilter]CIGammaAdjust>?dWQCPatchBCDEF`_publishedOutputPortsnkcjpm^l[ImageCrop_2Xsource_1[outputImage_ImageTransform_1_Interpolation_4\VideoInput_1[outputImage]ImageResize_1[outputImage[ImageCrop_1Xsource_0_Interpolation_3_inputTransform_TranslateY]AffineClamp_13Xsource_1_inputTransform_RotateXsource_0*?cdes'EO} streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameError message text?cde#3EOz streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameFlip Horizontal?cde*EOq streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameOutputO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ zoomFactorNSNumberNSValue*f scrolling {CGPoint=dd}$@positionnameVideo Input (Null Protected)-8SWq>?d\QCVideoInputE?3?3???VheightVuseYUV]cleanAperture[highQualityUwidth_deinterlaceFields^showAutoAdjust_colorCorrection \inputCapture3 O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd},Y>?d]QCMultiplexerEZinputCountYportClassO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name"Image Multiplexer"positionNSValue* {CGPoint=dd}h#]QCGLImagePort>?dZQCSplitterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name (Boolean)positionNSValue* {CGPoint=dd}2]QCBooleanPort>?d[QCTextImageE3 VheightUwidth#@X#@X ##@#@~ O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}>?d*ZQCSplitterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name"Image Splitter"positionNSValue* {CGPoint=dd}*?d>bEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}      _inputRectangle_Z_inputRectangle_X_inputRectangle_Y_inputRectangle_W#@###@~     ]QCImageFilterVCICrop?d>bEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}     "$&!#@##%#'#@~     "$&!#%'>?d./]QCImageResizeE01O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}:;2356?4?7?d>b9QRE??:P;<=>?@ABDFHJLN_inputTransform_TranslateY_inputTransform_ScaleY_inputTransform_TranslateX_inputTransform_ScaleX_inputTransform_Rotate_inputTransform_OriginX_inputTransform_OriginYC#E#?G#I#K#M#@tO#O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}W]QCImageFilter]CIAffineClamp>?dTU]QCMultiplexerEVO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Mirror SelectpositionNSValue* {CGPoint=dd}q?d>bXpEYZZO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}([\]^_`bdfh_inputTransform_TranslateX_inputTransform_OriginX_inputTransform_ScaleX_inputTransform_ScaleY_inputTransform_OriginYa#?#c#@te#?g#?i#@n[\]^_`bdfhacegi_CIAffineTransform>?drs_QCInterpolationCEt`~uwy{|v#?x#@;z#}#_O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}=I>?d_QCInterpolationCE`#@;#@EQ#;#_O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}=>?d_QCInterpolationCE`#@#@Q(\##_O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}v >?dWQCPatchBDEFcIKzrlm^uNHjxoqkLvpnTmods_ImageAccumulator_2*9_ImageAccumulator_3*L*LTmods]ImageKernel_4Xsource_19 9_ImageAccumulator_4Tmods9**L* Tmods*L *?cde3EOu streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Init / Run?cdeEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameinitial state vector matrixXsource_0?cdeEOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pixels Wide?cde*+EOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pixels High?cdeEOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name mod vectorsdceO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ zoomFactorNSNumberNSValue*f scrolling {CGPoint=dd}@positionname/2.5 GFLOPs/frame Iterator (64-step x4 cascaded) ,5CQ>?d_QCImageAccumulatorE3_accumulatorFormat_accumulatorContinuousURGBAf_inputDirtyOriginX_inputAccumulate_inputDirtyOriginY#3 # O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}>?d]QCMultiplexerEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name multiplexerpositionNSValue* {CGPoint=dd} >?d]QCImageKernelE??_showSamplerOptions\automaticDODZsourceCode\advancedModeTmainZcolorstyle#_B/* Mandelbrot iteration. The output needs to be fed back into the "image" input (via an accumulator); the second input "mod" holds per-pixel modifiers. image: r [its]/1.0e4 mod: r g g b [current Zr]/4+2 b Cr a [current Zi]/4+2 a Ci */ kernel vec4 iterate_C_Z(sampler image, float colorstyle, sampler mods) { vec2 c = samplerCoord(image); vec4 vars = sample(image, c); vec4 modv = sample(mods, c); float o_its = vars.r; float n_its = o_its; // vars.g is available float zr = vars.b; float zi = vars.a; // modv.r is available // modv.g is available float cr = modv.b; float ci = modv.a; float bail=40.0; float absz2 = zr*zr+zi*zi; bool z_overflow = (absz2 > bail); // true if we will stop iterating this time vec2 z2, z3; z2 = vec2(zr*zr - zi*zi + cr, 2.0*zr*zi + ci); z3 = vec2(z2.x*z2.x - z2.y*z2.y + cr, 2.0*z2.x*z2.y + ci); absz2 = z3.x*z3.x+z3.y*z3.y; n_its = (absz2?d ZQCSplitterE  O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name in: widthpositionNSValue* {CGPoint=dd}$\QCNumberPort>?d *ZQCSplitterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name in: heightpositionNSValue* {CGPoint=dd}H\QCNumberPort>?dZQCSplitterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namein: mod matrixpositionNSValue* {CGPoint=dd}>?d ]QCImageKernelE??Zcolorstyle#_B/* Mandelbrot iteration. The output needs to be fed back into the "image" input (via an accumulator); the second input "mod" holds per-pixel modifiers. image: r [its]/1.0e4 mod: r g g b [current Zr]/4+2 b Cr a [current Zi]/4+2 a Ci */ kernel vec4 iterate_C_Z(sampler image, float colorstyle, sampler mods) { vec2 c = samplerCoord(image); vec4 vars = sample(image, c); vec4 modv = sample(mods, c); float o_its = vars.r; float n_its = o_its; // vars.g is available float zr = vars.b; float zi = vars.a; // modv.r is available // modv.g is available float cr = modv.b; float ci = modv.a; float bail=40.0; float absz2 = zr*zr+zi*zi; bool z_overflow = (absz2 > bail); // true if we will stop iterating this time vec2 z2, z3; z2 = vec2(zr*zr - zi*zi + cr, 2.0*zr*zi + ci); z3 = vec2(z2.x*z2.x - z2.y*z2.y + cr, 2.0*z2.x*z2.y + ci); absz2 = z3.x*z3.x+z3.y*z3.y; n_its = (absz2?d _QCImageAccumulatorE!"3*+#%'$#3 (# O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}>?d-.]QCImageKernelE?/3?401Zcolorstyle2#_B/* Mandelbrot iteration. The output needs to be fed back into the "image" input (via an accumulator); the second input "mod" holds per-pixel modifiers. image: r [its]/1.0e4 mod: r g g b [current Zr]/4+2 b Cr a [current Zi]/4+2 a Ci */ kernel vec4 iterate_C_Z(sampler image, float colorstyle, sampler mods) { vec2 c = samplerCoord(image); vec4 vars = sample(image, c); vec4 modv = sample(mods, c); float o_its = vars.r; float n_its = o_its; // vars.g is available float zr = vars.b; float zi = vars.a; // modv.r is available // modv.g is available float cr = modv.b; float ci = modv.a; float bail=40.0; float absz2 = zr*zr+zi*zi; bool z_overflow = (absz2 > bail); // true if we will stop iterating this time vec2 z2, z3; z2 = vec2(zr*zr - zi*zi + cr, 2.0*zr*zi + ci); z3 = vec2(z2.x*z2.x - z2.y*z2.y + cr, 2.0*z2.x*z2.y + ci); absz2 = z3.x*z3.x+z3.y*z3.y; n_its = (absz2?d67_QCImageAccumulatorE893AB:<>;#3 ?# O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}q>?dDE_QCImageAccumulatorEFG3OPHJLI#3 M# O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}>?dRS]QCImageKernelE?TX?YUVZcolorstyleW#_B/* Mandelbrot iteration. The output needs to be fed back into the "image" input (via an accumulator); the second input "mod" holds per-pixel modifiers. image: r [its]/1.0e4 mod: r g g b [current Zr]/4+2 b Cr a [current Zi]/4+2 a Ci */ kernel vec4 iterate_C_Z(sampler image, float colorstyle, sampler mods) { vec2 c = samplerCoord(image); vec4 vars = sample(image, c); vec4 modv = sample(mods, c); float o_its = vars.r; float n_its = o_its; // vars.g is available float zr = vars.b; float zi = vars.a; // modv.r is available // modv.g is available float cr = modv.b; float ci = modv.a; float bail=40.0; float absz2 = zr*zr+zi*zi; bool z_overflow = (absz2 > bail); // true if we will stop iterating this time vec2 z2, z3; z2 = vec2(zr*zr - zi*zi + cr, 2.0*zr*zi + ci); z3 = vec2(z2.x*z2.x - z2.y*z2.y + cr, 2.0*z2.x*z2.y + ci); absz2 = z3.x*z3.x+z3.y*z3.y; n_its = (absz2?d[\XQCSprite]E^?~\antialiasing_`abcdefghikmopqrtvxVinputYVinputZVinputX\inputZBuffer]inputBlending\inputCullingWinputRZWinputRYWinputRXZinputColorj#l#?n#??s#u#w#yz{|}#?#?#?#?3 O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameMandelbrot ImagepositionNSValue* {CGPoint=dd}->?d ]QCImageKernelE??Zsome_color#?#?#?#?_g/* Setup Cr-Ci-0-0 output r 0.0 g 0.0 b [Cr]/4.0 + 2.0 a [Ci]/4.0 + 2.0 */ kernel vec4 multiplyEffect(sampler image, __color some_color, float cr, float ci, float size) { vec2 c = samplerCoord(image); vec2 bounds = samplerSize(image); float baser = cr - size/2.0; float basei = ci - size/2.0; float cr = baser + (c.x / bounds.x)*size; float ci = basei + (c.y / bounds.y)*size; // %%% in the future, "color" input will contain desired view center and size vec4 outpt = vec4(0.0, 0.0, cr, ci); return outpt; } O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameSetup modifierspositionNSValue* {CGPoint=dd}>?d]QCImageKernelE??_*/* Setup initial values of the state variables for the iteration pixels: output r g b 0.5 ( [Zr = 0.0] / 4.0 - 2.0 ) a 0.5 ( [Zi = 0.0] / 4.0 - 2.0 ) */ kernel vec4 multiplyEffect(sampler image) { return vec4(0.0, 0.0, 0.0, 0.0); } O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name All 0-0-0-0positionNSValue* {CGPoint=dd}=>?d]QCImageKernelE??_g/* Render iteration results in a nice colormap. */ vec4 go_hsv2rgba(float h, float s, float v, float a) { float i = floor(h); int ii = int(i); float f = h - i; float p = v * (1.0 - s); float q = v * (1.0 - s * f); float t = v * (1.0 - s * (1.0 - f)); vec4 rgba = (s <= 0.0) ? vec4(v, v, v, a) : ((ii == 0) ? vec4(v, t, p, a) : ((ii == 1) ? vec4(q, v, p, a) : ((ii == 2) ? vec4(p, v, t, a) : ((ii == 3) ? vec4(p, q, v, a) : ((ii == 4) ? vec4(t, p, v, a) : vec4(v, p, q, a) ))))); return rgba; } kernel vec4 color_map(sampler image) { vec2 c = samplerCoord(image); vec4 state = sample(image,c); float its = state.r; // state.g; float zr = state.b; float zi = state.a; float absz2 = zr*zr+zi*zi; bool z_overflow = (absz2 > 40.0); // true if we will stop iterating this time its = (its < 1.0) ? 1.0 : its; float h = sqrt(its); h = h / 6.0; h = h - floor(h); h = h * 6.0; vec4 col1 = go_hsv2rgba(h, 1.0, 1.0, 1.0); vec4 rv = z_overflow ? col1 : vec4(0, 0, 0, 0); return rv; } O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameDwell-only colormappositionNSValue* {CGPoint=dd}>?dWQCPatchBDEFk_ConstantColorGenerator_1?cde EOp streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameWidth?cde_ EOq streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameHeight?cde##?##?UColorZinputColordceO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ zoomFactorNSNumberNSValue*f scrolling {CGPoint=dd}܊@position< nameConstant color bitmap?d>bE??##?##?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}]QCImageFilter_CIConstantColorGenerator?d>bEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}B  ##  >?dW\QCScreenInfoEM3O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd} >?dZQCSplitterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameRendertile WidthpositionNSValue* {CGPoint=dd}^t\QCNumberPort>?d*ZQCSplitterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameRendertile HeightpositionNSValue* {CGPoint=dd}]\QCNumberPort>?d\QCImagePixelEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}1_inputColorSpace[inputPixelX[inputPixelY#@6#?>?dXQCSpriteE]?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namecamera (Natural-color)positionNSValue* {CGPoint=dd}^9hf.`_gdaecb#?#?#?#?##?333333#?#?#?#?#?ffffff#??>?d0XQCSpriteE]?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namecamera (color-processed)positionNSValue* {CGPoint=dd}Qhf.`_gdaecb  !    #?ޘޠ#?#??d#$]QCImageResizeE%&O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}a :;'(??>?d*+XQCSpriteE],?-O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namesampling matrixpositionNSValue* {CGPoint=dd}]hf.`_gdaecb.468:<>@ACEF/0123#?ޘޠ#?#?bHE??IJKLMNOPQRSTUV\^`bhjlrtz_inputCenterColor2^inputContrast3_inputCloseness2^inputContrast1_inputCenterColor1_inputCloseness1^inputContrast2_inputReplacementColor1_inputCloseness3_inputReplacementColor2_inputCenterColor3_inputReplacementColor3WXYZ[#?ʝ#?#?#]#?_#a#?cdefg#?hY`#?#?Č#?:@i#?k#?mnopq#?#?#?#?s#uvwxy#?q#?#?1=@#{|}~#?#?#?_`#?#?#?#?R`#?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}]QCImageFilter[CISpotColor>?dZQCSplitterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name"Image Splitter"positionNSValue* {CGPoint=dd}7>?d_QCNumberFormatterEVformatO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}T0.00>?d[QCTextImageE #?#? ####O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}C>?dXQCSpriteE]?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namehotspot R measurepositionNSValue* {CGPoint=dd} hf.`_gdaecb#?#?#?#?##?#?#?#ə#?#?+ J#??>?dXQCSpriteE]?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameZoom-In hotspotpositionNSValue* {CGPoint=dd} hf.`_gdaecb#?#?#?###?tj~#?#?tj~#lC#?#?&x#?>?d_QCImageAccumulatorE#3 #O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}%>?d[QCTextImageE #?333333'#?333333_GLSL-Mandelzoom ###@#O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}]>?dWQCPatchBDEF.01^ljc9Xsource_1*L*Tmods!%(+?cde3E Ou streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Init / Run?cde"$E#O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameinitial state vector matrixXsource_0?cde&E'Ov streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pixels Wide?cde)*+E*Ov streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pixels High?cde,E-Ov streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name mod vectors/dceO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ zoomFactorNSNumberNSValue*f scrolling {CGPoint=dd}@positionYname0150 MFLOPs/frame Iterator (16-step single stage)2@DMRW>?d34_QCImageAccumulatorE563>?79;8#3 <# O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}>?dAB]QCMultiplexerECO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name multiplexerpositionNSValue* {CGPoint=dd}M>?dEF]QCImageKernelE?GK?LHIZcolorstyleJ#_ M/* Mandelbrot iteration. The output needs to be fed back into the "image" input (via an accumulator); the second input "mod" holds per-pixel modifiers. image: r [its]/1.0e4 mod: r g g b [current Zr]/4+2 b Cr a [current Zi]/4+2 a Ci */ kernel vec4 iterate_C_Z(sampler image, float colorstyle, sampler mods) { vec2 c = samplerCoord(image); vec4 vars = sample(image, c); vec4 modv = sample(mods, c); float o_its = vars.r; float n_its = o_its; // vars.g is free float zr = vars.b; float zi = vars.a; // modv.r is free // modv.g is free float cr = modv.b; float ci = modv.a; float bail=40.0; float absz2 = zr*zr+zi*zi; bool z_overflow = (absz2 > bail); // true if we will stop iterating this time vec2 z2, z3; z2 = vec2(zr*zr - zi*zi + cr, 2.0*zr*zi + ci); absz2 = z2.x*z2.x+z2.y*z2.y; n_its = (absz2?dNOZQCSplitterEPQO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name in: widthpositionNSValue* {CGPoint=dd}\QCNumberPort>?dST*ZQCSplitterEUVO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name in: heightpositionNSValue* {CGPoint=dd}4\QCNumberPort>?dXYZQCSplitterEZ[O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namein: mod matrixpositionNSValue* {CGPoint=dd}]QCVirtualPort>?d]^]QCImageResizeE_`O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}c:;abde?c?f>?dhiZQCSplitterEjkO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name"Number Splitter"positionNSValue* {CGPoint=dd}@\QCNumberPort>?dmnZQCSplitterEopO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name vButton RpositionNSValue* {CGPoint=dd}L\QCNumberPort>?drsZQCSplitterEtuO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameUser Option - Show Live VideopositionNSValue* {CGPoint=dd}<]QCBooleanPort>?dwx]QCMultiplexerEyO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameSelect PerformancepositionNSValue* {CGPoint=dd}A>?d{|?d2WQCLogicEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameSmoothing inputpositionNSValue* {CGPoint=dd}q:wx>?d]QCMultiplexerEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name"Image Multiplexer"positionNSValue* {CGPoint=dd}{>?dZQCSplitterE\QCNumberPort#@O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameWidth and HeightpositionNSValue* {CGPoint=dd}>?dZQCSplitterE\QCNumberPort#@8O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namePixelator WidthpositionNSValue* {CGPoint=dd}>?dVQCMathE[operation_1Yoperand_1#?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namePixelator HeightpositionNSValue* {CGPoint=dd}Z>?d]QCImageLoaderE??_colorCorrectionYallImages^fillBackgroundYimageDataOPNG  IHDRo6iCCPICC Profilex?oPŏ*PUR R[B`%lā1N /R20!S7 BP#R%Ŝg$*dϻ~g YsV @Dyi.qabbh 1άh#"_>ښ:@O߮#{L1JD#ZUW=ǣǒ[AANj9GOkXr-g{zC}ONFbӆ,4\My#i~{WӸ‘ߴHmOR&L:H `Wߦw #|ۺp +z(/=5ف׬9KJ@&Px Y2 {Hmjw[]U㼏ڵ9>9ZU"7<"YRuXvV4JN+857fUG~-D|<`mv$ g֏  .<y[tvW g^8}lX^bLmD2NJ'q-Ы pHYs  VIDAT8cdb9 ,l132RE@&iF "a4FC%$ aϠea./ 4cIENDB`O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Plain SquarepositionNSValue* {CGPoint=dd}WY?d>bE??O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}]QCImageFilter]CIColorInvert>?d\QCImagePixelEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}#?#?>?d_QCNumberFormatterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}>?d [QCTextImageE #?#? ####O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}F>?d XQCSpriteE]?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namehotspot L measurepositionNSValue* {CGPoint=dd}Ahf.`_gdaecb#?#?#?#?##?#?#?#ə#?#? =p#??>?dZQCSplitterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name vButton LpositionNSValue* {CGPoint=dd}\QCNumberPort>?dXQCSpriteE]?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameZoom-Out hotspotpositionNSValue* {CGPoint=dd}Ahf.`_gdaecb   #?#?#?# # #?tj~#?#?tj~#lC#?#?ӕ$/#?>?dVQCMathE (!"#$%&[operation_1[operation_2Yoperand_2'#?333333O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name raw zoom ratepositionNSValue* {CGPoint=dd}:>?d*+D[QCTextImageE,-9 @#?.01357/#? 2#4#6#8#3.1574/268O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}>?dBCXQCSpriteE]D?EO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name dv: zoom ratepositionNSValue* {CGPoint=dd}hf.`_gdaecbFLNPRTVXY[]^GHIJK#?#?#?#?M#O#?Q#?S#?U#W#?Z#?M\#??>?d`a_QCNumberFormatterEbO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}?d>bdjkECe`fO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameCurrent zoom valuepositionNSValue* {CGPoint=dd}.]gh_inputResetSignal_QCDifferentialValueZintegrator>?dmn[QCTextImageEop| #?qstvxzr#? u#w#y#{#vqtxzwruy{O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}Q>?dXQCSpriteE]?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namedv: current zoompositionNSValue* {CGPoint=dd}Ehf.`_gdaecb#?#?#?#?##?#?#?##?#?M#??>?dO_QCNumberFormatterEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}i>?d\QCExpressionEDO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name&"(a<0.0) ? 0.1 : ((a>5.0) ? -0.1 : b)"positionNSValue* {CGPoint=dd}_$(a<0.0) ? 0.1 : ((a>5.0) ? -0.1 : b)>?dG\QCExpressionEDO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name"0.03 * exp(a)"positionNSValue* {CGPoint=dd}]U]0.03 * exp(a)>?d\QCFPSDisplayEO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {CGPoint=dd}uYinputMode?o2010 Robert Munafo_GLMZ - OpenGL MANDELZOOM9EOb{qt5=QZlr{"'3:]f 2>G]fl+9GUcq &4AO]ky,:HVdr  ( 6 C Q _ l z   . < M X j u   ! - ; L Z x  1 < G P a l u    ( 3 > O Z k x %6WYer +7K\dj{ (1BSar~*>OXiz /;LUfny+4EVgs(9J[l}0AFJOTMPafv!->C_pu !!!!!!!""""'","2"C"G"M"R"X"a"j"s"|"}"""###%#2#>#_#k##########$$$$$$$-$6$?$H$M$V$[$]$b$k$p$q$r$s$~$$$$%<%=%J%\%q%%%%%%%%%%%%%%&&&&&&&&''/'K'W'c't''''''''((((!("))%)2)>)c)w)))))))))****)*.*7*<*{**************+++++#+(+-+.++++, ,,, ,%,.,3,4,5,6,;,@,A,,,,,-------------........./////////////00 00000001b1o1v1}11111111111112222222222233333333344 44444445 55(5-585=5F5O5556 66-6D6666666667 77&747E7Q7]7n7w7777777888"8:8K8T8e8v8{8899"9'9999:1;;;X;e;r;;;;;;;;<<<<<<<<<<<<<=====>>>>>>>>>?? ??? ?%?.?3?<???@?C????@@@AbAsAAAAAAAAAAAABB BBBB*B1BBBOBBBCCCCCC#C,C=CBCGCLCQC^ClCuD DDD$D'D,D1D4DEDfDDDDDEEE5E:ECEHEQEVE_EdEmErE{EEEEF+F9FGFTFbFoG G1G>GGHHH4HLHeHjHsHxHHHHHHHHHHHHHHHI I!I6I;IDIIIRIWI`IeIjIsIxI}JJJ0JEJZJ_JhJmJvJ{JJJJJJK5KBKTKiK~KKKKKKKKKKKLYLfLnLLM MM!M6MGMXMmM~MMMMMMMMNNN&N7N<NMN^NoNNNNNNNNNO OO/O@OQO\OmOrOOPPPPPQ!Q2Q7QQQR?RBROSlSSSSSSSSTTT,T@TETNTSTTTYTbTcTfTUUU"UUUV V"V/V:VGVLVQV\VaVjsX$/<M .KN[`inot}~"0QVafot}ŠŸ¼¿ÆÓá& BIPWdr $-6?DIJ 6;FK\enwN/4E`gx}z$):CLU^,9(}AN`lx}v ',5:?HMV[`mv?pu$)6DM #,5:CHQV_dmr{+:L[o )2;@INW\ej{"+4=BS\enw|ES_lw8EYbi@Ibgpuzp}Hy~ (-2?HU9>OXajsx-:?HMNS\^_a   3 < Y ^ g l ~                 ~          ' 8 I Z _ j {         / @ E   MP]{hu     !!!!!"h"v"""#.#?#D#I#L#Q#V#Y#f#q#~$3$@$M$X$e%%%,%7%D&&& &.&;&&''''''''''(((((((())))))))********++++++++++,,,,,,--/0001n1|11112A2N2S2X2a2f2o2|223-3:3F3k3t333333333333333344444445s55555555555566 666$6)62676<6E6J6S6X6]6j6u67/7<7I7R7_88D8I8Z8c8l8u8~88888888888888888889 99&939?9K9U9Z9_9d9m::+:7:\:e:~::::::::::::::::::;;;;<`<<<<<<<<<<<<<<======$=)=2=7=@=E=J=W=k=t>>>&>>>>>???(?4?Y?b?{??????????????????@@@@A`AAAAAAAAAAAAAABBBBBB$B)B2B7B@BEBJBWBkBtCCC"C+CDD)D6D?DEE EE#EEEEEF