├── .gitignore
├── README.md
├── examples
├── example_mesh
│ ├── Makefile
│ ├── Project.xcconfig
│ ├── addons.make
│ ├── bin
│ │ └── data
│ │ │ └── .gitkeep
│ ├── config.make
│ ├── example_mesh.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ ├── example_mesh Debug.xcscheme
│ │ │ └── example_mesh Release.xcscheme
│ ├── openFrameworks-Info.plist
│ └── src
│ │ ├── main.cpp
│ │ ├── ofApp.cpp
│ │ └── ofApp.h
└── example_ofxGui
│ ├── Makefile
│ ├── Project.xcconfig
│ ├── addons.make
│ ├── bin
│ └── data
│ │ └── .gitkeep
│ ├── config.make
│ ├── example_ofxGui.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── example_ofxGui Debug.xcscheme
│ │ └── example_ofxGui Release.xcscheme
│ ├── openFrameworks-Info.plist
│ └── src
│ ├── PingPong.h
│ ├── main.cpp
│ ├── ofApp.cpp
│ └── ofApp.h
├── ofxaddons_thumbnail.png
├── src
├── PingPong.h
├── ofxReactionDiffusion.cpp
└── ofxReactionDiffusion.h
└── thumbs
├── bz.gif
├── fhn.gif
├── gs.gif
├── header.png
└── mesh.gif
/.gitignore:
--------------------------------------------------------------------------------
1 | *.app
2 | xcuserdata/
3 |
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | #### ofxReactionDiffusion is openFrameworks addon for visualizing Reaction-Diffusion System using GPU.
3 |
4 | ## Installation
5 | Copy to `openFrameworks > addons`.
6 |
7 | ## Reaction Diffusion System
8 | > Reaction–diffusion systems are mathematical models which correspond to several physical phenomena: the most common is the change in space and time of the concentration of one or more chemical substances: local chemical reactions in which the substances are transformed into each other, and diffusion which causes the substances to spread out over a surface in space.
9 | > (from [Wikipedia](https://en.wikipedia.org/wiki/Reaction%E2%80%93diffusion_system))
10 |
11 | ## Models
12 | Reaction-Diffusion System has a few mathematical models and ofxReactionDiffusion implements three models of them.
13 |
14 | ### - Gray-Scott
15 |
16 |
17 | ### - FitzHugh-Nagumo
18 |
19 |
20 | ### - Belousov-Zhabotinsky
21 |
22 |
23 | ## Usage
24 | Models are defined `ReactionDiffusionMode` .
25 | You can switch drawing model by `void setMode(ReactionDiffusionMode _mode)` .
26 |
27 | Since each mode has its own parameters, it is necessary to use the parameters properly according to the mode being used.
28 | #### - Gray-Scott
29 | ```c++
30 | float feed;
31 | float kill;
32 | float Du;
33 | float Dv;
34 | ```
35 |
36 | #### - FitzHugh-Nagumo
37 | ```c++
38 | float a0;
39 | float a1;
40 | float epsilon;
41 | float delta;
42 | float k1;
43 | float k2;
44 | float k3;
45 | ```
46 |
47 | #### - Belousov-Zhabotinsky
48 | ```c++
49 | float alpha;
50 | float beta;
51 | float gamma;
52 | ```
53 |
54 | ### Extension
55 | #### Examples > example_mesh
56 | Values, concentration of substances, are stored in FBO(texture) and they are represented as RGB in texture in ofxReactionDiffusion. You can get source texture by `getSourceTexture`.
57 |
58 |
59 |
60 | For example, reaction diffusion values can use for depth of VBOMesh. (See **Examples > example_mesh**)
61 |
--------------------------------------------------------------------------------
/examples/example_mesh/Makefile:
--------------------------------------------------------------------------------
1 | # Attempt to load a config.make file.
2 | # If none is found, project defaults in config.project.make will be used.
3 | ifneq ($(wildcard config.make),)
4 | include config.make
5 | endif
6 |
7 | # make sure the the OF_ROOT location is defined
8 | ifndef OF_ROOT
9 | OF_ROOT=$(realpath ../../../..)
10 | endif
11 |
12 | # call the project makefile!
13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk
14 |
--------------------------------------------------------------------------------
/examples/example_mesh/Project.xcconfig:
--------------------------------------------------------------------------------
1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT.
2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED
3 | OF_PATH = ../../../..
4 |
5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE
6 | #include "../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig"
7 |
8 | //ICONS - NEW IN 0072
9 | ICON_NAME_DEBUG = icon-debug.icns
10 | ICON_NAME_RELEASE = icon.icns
11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/
12 |
13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to:
14 | //ICON_FILE_PATH = bin/data/
15 |
16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS)
17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS)
18 |
--------------------------------------------------------------------------------
/examples/example_mesh/addons.make:
--------------------------------------------------------------------------------
1 | ofxReactionDiffusion
2 |
--------------------------------------------------------------------------------
/examples/example_mesh/bin/data/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matsune/ofxReactionDiffusion/63907476971c55bb2ad5f15716e91e26d2ecb6bb/examples/example_mesh/bin/data/.gitkeep
--------------------------------------------------------------------------------
/examples/example_mesh/config.make:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # CONFIGURE PROJECT MAKEFILE (optional)
3 | # This file is where we make project specific configurations.
4 | ################################################################################
5 |
6 | ################################################################################
7 | # OF ROOT
8 | # The location of your root openFrameworks installation
9 | # (default) OF_ROOT = ../../../..
10 | ################################################################################
11 | # OF_ROOT = ../../../..
12 |
13 | ################################################################################
14 | # PROJECT ROOT
15 | # The location of the project - a starting place for searching for files
16 | # (default) PROJECT_ROOT = . (this directory)
17 | #
18 | ################################################################################
19 | # PROJECT_ROOT = .
20 |
21 | ################################################################################
22 | # PROJECT SPECIFIC CHECKS
23 | # This is a project defined section to create internal makefile flags to
24 | # conditionally enable or disable the addition of various features within
25 | # this makefile. For instance, if you want to make changes based on whether
26 | # GTK is installed, one might test that here and create a variable to check.
27 | ################################################################################
28 | # None
29 |
30 | ################################################################################
31 | # PROJECT EXTERNAL SOURCE PATHS
32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder.
33 | # Like source folders in the PROJECT_ROOT, these paths are subject to
34 | # exlclusion via the PROJECT_EXLCUSIONS list.
35 | #
36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
37 | #
38 | # Note: Leave a leading space when adding list items with the += operator
39 | ################################################################################
40 | # PROJECT_EXTERNAL_SOURCE_PATHS =
41 |
42 | ################################################################################
43 | # PROJECT EXCLUSIONS
44 | # These makefiles assume that all folders in your current project directory
45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
46 | # to look for source code. The any folders or files that match any of the
47 | # items in the PROJECT_EXCLUSIONS list below will be ignored.
48 | #
49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
50 | # string unless teh user adds a wildcard (%) operator to match subdirectories.
51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is
52 | # treated literally.
53 | #
54 | # (default) PROJECT_EXCLUSIONS = (blank)
55 | #
56 | # Will automatically exclude the following:
57 | #
58 | # $(PROJECT_ROOT)/bin%
59 | # $(PROJECT_ROOT)/obj%
60 | # $(PROJECT_ROOT)/%.xcodeproj
61 | #
62 | # Note: Leave a leading space when adding list items with the += operator
63 | ################################################################################
64 | # PROJECT_EXCLUSIONS =
65 |
66 | ################################################################################
67 | # PROJECT LINKER FLAGS
68 | # These flags will be sent to the linker when compiling the executable.
69 | #
70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs
71 | #
72 | # Note: Leave a leading space when adding list items with the += operator
73 | ################################################################################
74 |
75 | # Currently, shared libraries that are needed are copied to the
76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
77 | # add a runtime path to search for those shared libraries, since they aren't
78 | # incorporated directly into the final executable application binary.
79 | # TODO: should this be a default setting?
80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs
81 |
82 | ################################################################################
83 | # PROJECT DEFINES
84 | # Create a space-delimited list of DEFINES. The list will be converted into
85 | # CFLAGS with the "-D" flag later in the makefile.
86 | #
87 | # (default) PROJECT_DEFINES = (blank)
88 | #
89 | # Note: Leave a leading space when adding list items with the += operator
90 | ################################################################################
91 | # PROJECT_DEFINES =
92 |
93 | ################################################################################
94 | # PROJECT CFLAGS
95 | # This is a list of fully qualified CFLAGS required when compiling for this
96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
97 | # defined in your platform specific core configuration files. These flags are
98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
99 | #
100 | # (default) PROJECT_CFLAGS = (blank)
101 | #
102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
103 | # your platform specific configuration file will be applied by default and
104 | # further flags here may not be needed.
105 | #
106 | # Note: Leave a leading space when adding list items with the += operator
107 | ################################################################################
108 | # PROJECT_CFLAGS =
109 |
110 | ################################################################################
111 | # PROJECT OPTIMIZATION CFLAGS
112 | # These are lists of CFLAGS that are target-specific. While any flags could
113 | # be conditionally added, they are usually limited to optimization flags.
114 | # These flags are added BEFORE the PROJECT_CFLAGS.
115 | #
116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
117 | #
118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank)
119 | #
120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets.
121 | #
122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
123 | #
124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
126 | # file will be applied by default and further optimization flags here may not
127 | # be needed.
128 | #
129 | # Note: Leave a leading space when adding list items with the += operator
130 | ################################################################################
131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
133 |
134 | ################################################################################
135 | # PROJECT COMPILERS
136 | # Custom compilers can be set for CC and CXX
137 | # (default) PROJECT_CXX = (blank)
138 | # (default) PROJECT_CC = (blank)
139 | # Note: Leave a leading space when adding list items with the += operator
140 | ################################################################################
141 | # PROJECT_CXX =
142 | # PROJECT_CC =
143 |
--------------------------------------------------------------------------------
/examples/example_mesh/example_mesh.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | archiveVersion
5 | 1
6 | classes
7 |
8 | objectVersion
9 | 46
10 | objects
11 |
12 | 2432509529536F6A883EFAF6
13 |
14 | explicitFileType
15 | sourcecode.c.h
16 | fileEncoding
17 | 30
18 | isa
19 | PBXFileReference
20 | name
21 | PingPong.h
22 | path
23 | ../../../../addons/ofxReactionDiffusion/src/PingPong.h
24 | sourceTree
25 | SOURCE_ROOT
26 |
27 | F4CAC834D4B9076DC504621D
28 |
29 | explicitFileType
30 | sourcecode.c.h
31 | fileEncoding
32 | 30
33 | isa
34 | PBXFileReference
35 | name
36 | ofxReactionDiffusion.h
37 | path
38 | ../../../../addons/ofxReactionDiffusion/src/ofxReactionDiffusion.h
39 | sourceTree
40 | SOURCE_ROOT
41 |
42 | 12BA66A1958C3B17CF449C43
43 |
44 | children
45 |
46 | 0F64C7E2A2802A2CE6079B69
47 | F4CAC834D4B9076DC504621D
48 | 2432509529536F6A883EFAF6
49 |
50 | isa
51 | PBXGroup
52 | name
53 | src
54 | sourceTree
55 | <group>
56 |
57 | 43508BF48D4E7088028AEEAA
58 |
59 | children
60 |
61 | 12BA66A1958C3B17CF449C43
62 |
63 | isa
64 | PBXGroup
65 | name
66 | ofxReactionDiffusion
67 | sourceTree
68 | <group>
69 |
70 | 8EFE04C2B8D70F4847663CD1
71 |
72 | fileRef
73 | 0F64C7E2A2802A2CE6079B69
74 | isa
75 | PBXBuildFile
76 |
77 | 0F64C7E2A2802A2CE6079B69
78 |
79 | explicitFileType
80 | sourcecode.cpp.cpp
81 | fileEncoding
82 | 30
83 | isa
84 | PBXFileReference
85 | name
86 | ofxReactionDiffusion.cpp
87 | path
88 | ../../../../addons/ofxReactionDiffusion/src/ofxReactionDiffusion.cpp
89 | sourceTree
90 | SOURCE_ROOT
91 |
92 | 6948EE371B920CB800B5AC1A
93 |
94 | children
95 |
96 | isa
97 | PBXGroup
98 | name
99 | local_addons
100 | sourceTree
101 | <group>
102 |
103 | BB4B014C10F69532006C3DED
104 |
105 | children
106 |
107 | 43508BF48D4E7088028AEEAA
108 |
109 | isa
110 | PBXGroup
111 | name
112 | addons
113 | sourceTree
114 | <group>
115 |
116 | E4328143138ABC890047C5CB
117 |
118 | isa
119 | PBXFileReference
120 | lastKnownFileType
121 | wrapper.pb-project
122 | name
123 | openFrameworksLib.xcodeproj
124 | path
125 | ../../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj
126 | sourceTree
127 | SOURCE_ROOT
128 |
129 | E4328144138ABC890047C5CB
130 |
131 | children
132 |
133 | E4328148138ABC890047C5CB
134 |
135 | isa
136 | PBXGroup
137 | name
138 | Products
139 | sourceTree
140 | <group>
141 |
142 | E4328147138ABC890047C5CB
143 |
144 | containerPortal
145 | E4328143138ABC890047C5CB
146 | isa
147 | PBXContainerItemProxy
148 | proxyType
149 | 2
150 | remoteGlobalIDString
151 | E4B27C1510CBEB8E00536013
152 | remoteInfo
153 | openFrameworks
154 |
155 | E4328148138ABC890047C5CB
156 |
157 | fileType
158 | archive.ar
159 | isa
160 | PBXReferenceProxy
161 | path
162 | openFrameworksDebug.a
163 | remoteRef
164 | E4328147138ABC890047C5CB
165 | sourceTree
166 | BUILT_PRODUCTS_DIR
167 |
168 | E4328149138ABC9F0047C5CB
169 |
170 | fileRef
171 | E4328148138ABC890047C5CB
172 | isa
173 | PBXBuildFile
174 |
175 | E4B69B4A0A3A1720003C02F2
176 |
177 | children
178 |
179 | E4B6FCAD0C3E899E008CF71C
180 | E4EB6923138AFD0F00A09F29
181 | E4B69E1C0A3A1BDC003C02F2
182 | E4EEC9E9138DF44700A80321
183 | BB4B014C10F69532006C3DED
184 | 6948EE371B920CB800B5AC1A
185 | E4B69B5B0A3A1756003C02F2
186 |
187 | isa
188 | PBXGroup
189 | sourceTree
190 | <group>
191 |
192 | E4B69B4C0A3A1720003C02F2
193 |
194 | attributes
195 |
196 | LastUpgradeCheck
197 | 0600
198 |
199 | buildConfigurationList
200 | E4B69B4D0A3A1720003C02F2
201 | compatibilityVersion
202 | Xcode 3.2
203 | developmentRegion
204 | English
205 | hasScannedForEncodings
206 | 0
207 | isa
208 | PBXProject
209 | knownRegions
210 |
211 | English
212 | Japanese
213 | French
214 | German
215 |
216 | mainGroup
217 | E4B69B4A0A3A1720003C02F2
218 | productRefGroup
219 | E4B69B4A0A3A1720003C02F2
220 | projectDirPath
221 |
222 | projectReferences
223 |
224 |
225 | ProductGroup
226 | E4328144138ABC890047C5CB
227 | ProjectRef
228 | E4328143138ABC890047C5CB
229 |
230 |
231 | projectRoot
232 |
233 | targets
234 |
235 | E4B69B5A0A3A1756003C02F2
236 |
237 |
238 | E4B69B4D0A3A1720003C02F2
239 |
240 | buildConfigurations
241 |
242 | E4B69B4E0A3A1720003C02F2
243 | E4B69B4F0A3A1720003C02F2
244 |
245 | defaultConfigurationIsVisible
246 | 0
247 | defaultConfigurationName
248 | Release
249 | isa
250 | XCConfigurationList
251 |
252 | E4B69B4E0A3A1720003C02F2
253 |
254 | baseConfigurationReference
255 | E4EB6923138AFD0F00A09F29
256 | buildSettings
257 |
258 | HEADER_SEARCH_PATHS
259 |
260 | $(OF_CORE_HEADERS)
261 | ../../../../addons/ofxReactionDiffusion/src
262 |
263 | CONFIGURATION_BUILD_DIR
264 | $(SRCROOT)/bin/
265 | COPY_PHASE_STRIP
266 | NO
267 | DEAD_CODE_STRIPPING
268 | YES
269 | GCC_AUTO_VECTORIZATION
270 | YES
271 | GCC_ENABLE_SSE3_EXTENSIONS
272 | YES
273 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS
274 | YES
275 | GCC_INLINES_ARE_PRIVATE_EXTERN
276 | NO
277 | GCC_OPTIMIZATION_LEVEL
278 | 0
279 | GCC_SYMBOLS_PRIVATE_EXTERN
280 | NO
281 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS
282 | YES
283 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO
284 | NO
285 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL
286 | NO
287 | GCC_WARN_UNINITIALIZED_AUTOS
288 | NO
289 | GCC_WARN_UNUSED_VALUE
290 | NO
291 | GCC_WARN_UNUSED_VARIABLE
292 | NO
293 | MACOSX_DEPLOYMENT_TARGET
294 | 10.8
295 | ONLY_ACTIVE_ARCH
296 | YES
297 | OTHER_CPLUSPLUSFLAGS
298 |
299 | -D__MACOSX_CORE__
300 | -mtune=native
301 |
302 | SDKROOT
303 | macosx
304 |
305 | isa
306 | XCBuildConfiguration
307 | name
308 | Debug
309 |
310 | E4B69B4F0A3A1720003C02F2
311 |
312 | baseConfigurationReference
313 | E4EB6923138AFD0F00A09F29
314 | buildSettings
315 |
316 | HEADER_SEARCH_PATHS
317 |
318 | $(OF_CORE_HEADERS)
319 | ../../../../addons/ofxReactionDiffusion/src
320 |
321 | CONFIGURATION_BUILD_DIR
322 | $(SRCROOT)/bin/
323 | COPY_PHASE_STRIP
324 | YES
325 | DEAD_CODE_STRIPPING
326 | YES
327 | GCC_AUTO_VECTORIZATION
328 | YES
329 | GCC_ENABLE_SSE3_EXTENSIONS
330 | YES
331 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS
332 | YES
333 | GCC_INLINES_ARE_PRIVATE_EXTERN
334 | NO
335 | GCC_OPTIMIZATION_LEVEL
336 | 3
337 | GCC_SYMBOLS_PRIVATE_EXTERN
338 | NO
339 | GCC_UNROLL_LOOPS
340 | YES
341 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS
342 | YES
343 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO
344 | NO
345 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL
346 | NO
347 | GCC_WARN_UNINITIALIZED_AUTOS
348 | NO
349 | GCC_WARN_UNUSED_VALUE
350 | NO
351 | GCC_WARN_UNUSED_VARIABLE
352 | NO
353 | MACOSX_DEPLOYMENT_TARGET
354 | 10.8
355 | OTHER_CPLUSPLUSFLAGS
356 |
357 | -D__MACOSX_CORE__
358 | -mtune=native
359 |
360 | SDKROOT
361 | macosx
362 |
363 | isa
364 | XCBuildConfiguration
365 | name
366 | Release
367 |
368 | E4B69B580A3A1756003C02F2
369 |
370 | buildActionMask
371 | 2147483647
372 | files
373 |
374 | E4B69E200A3A1BDC003C02F2
375 | E4B69E210A3A1BDC003C02F2
376 | 8EFE04C2B8D70F4847663CD1
377 |
378 | isa
379 | PBXSourcesBuildPhase
380 | runOnlyForDeploymentPostprocessing
381 | 0
382 |
383 | E4B69B590A3A1756003C02F2
384 |
385 | buildActionMask
386 | 2147483647
387 | files
388 |
389 | E4328149138ABC9F0047C5CB
390 |
391 | isa
392 | PBXFrameworksBuildPhase
393 | runOnlyForDeploymentPostprocessing
394 | 0
395 |
396 | E4B69B5A0A3A1756003C02F2
397 |
398 | buildConfigurationList
399 | E4B69B5F0A3A1757003C02F2
400 | buildPhases
401 |
402 | E4B69B580A3A1756003C02F2
403 | E4B69B590A3A1756003C02F2
404 | E4B6FFFD0C3F9AB9008CF71C
405 | E4C2427710CC5ABF004149E2
406 |
407 | buildRules
408 |
409 | dependencies
410 |
411 | E4EEB9AC138B136A00A80321
412 |
413 | isa
414 | PBXNativeTarget
415 | name
416 | example_mesh
417 | productName
418 | myOFApp
419 | productReference
420 | E4B69B5B0A3A1756003C02F2
421 | productType
422 | com.apple.product-type.application
423 |
424 | E4B69B5B0A3A1756003C02F2
425 |
426 | explicitFileType
427 | wrapper.application
428 | includeInIndex
429 | 0
430 | isa
431 | PBXFileReference
432 | path
433 | example_meshDebug.app
434 | sourceTree
435 | BUILT_PRODUCTS_DIR
436 |
437 | E4B69B5F0A3A1757003C02F2
438 |
439 | buildConfigurations
440 |
441 | E4B69B600A3A1757003C02F2
442 | E4B69B610A3A1757003C02F2
443 |
444 | defaultConfigurationIsVisible
445 | 0
446 | defaultConfigurationName
447 | Release
448 | isa
449 | XCConfigurationList
450 |
451 | E4B69B600A3A1757003C02F2
452 |
453 | baseConfigurationReference
454 | E4EB6923138AFD0F00A09F29
455 | buildSettings
456 |
457 | HEADER_SEARCH_PATHS
458 |
459 | $(OF_CORE_HEADERS)
460 | ../../../../addons/ofxReactionDiffusion/src
461 |
462 | COMBINE_HIDPI_IMAGES
463 | YES
464 | COPY_PHASE_STRIP
465 | NO
466 | FRAMEWORK_SEARCH_PATHS
467 |
468 | $(inherited)
469 | $(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)
470 |
471 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1
472 | "$(SRCROOT)/../../../../libs/glut/lib/osx"
473 | GCC_DYNAMIC_NO_PIC
474 | NO
475 | GCC_GENERATE_DEBUGGING_SYMBOLS
476 | YES
477 | GCC_MODEL_TUNING
478 | NONE
479 | ICON
480 | $(ICON_NAME_DEBUG)
481 | ICON_FILE
482 | $(ICON_FILE_PATH)$(ICON)
483 | INFOPLIST_FILE
484 | openFrameworks-Info.plist
485 | INSTALL_PATH
486 | /Applications
487 | LIBRARY_SEARCH_PATHS
488 | $(inherited)
489 | PRODUCT_NAME
490 | $(TARGET_NAME)Debug
491 | WRAPPER_EXTENSION
492 | app
493 |
494 | isa
495 | XCBuildConfiguration
496 | name
497 | Debug
498 |
499 | E4B69B610A3A1757003C02F2
500 |
501 | baseConfigurationReference
502 | E4EB6923138AFD0F00A09F29
503 | buildSettings
504 |
505 | HEADER_SEARCH_PATHS
506 |
507 | $(OF_CORE_HEADERS)
508 | ../../../../addons/ofxReactionDiffusion/src
509 |
510 | COMBINE_HIDPI_IMAGES
511 | YES
512 | COPY_PHASE_STRIP
513 | YES
514 | FRAMEWORK_SEARCH_PATHS
515 |
516 | $(inherited)
517 | $(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)
518 |
519 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1
520 | "$(SRCROOT)/../../../../libs/glut/lib/osx"
521 | GCC_GENERATE_DEBUGGING_SYMBOLS
522 | YES
523 | GCC_MODEL_TUNING
524 | NONE
525 | ICON
526 | $(ICON_NAME_RELEASE)
527 | ICON_FILE
528 | $(ICON_FILE_PATH)$(ICON)
529 | INFOPLIST_FILE
530 | openFrameworks-Info.plist
531 | INSTALL_PATH
532 | /Applications
533 | LIBRARY_SEARCH_PATHS
534 | $(inherited)
535 | PRODUCT_NAME
536 | $(TARGET_NAME)
537 | WRAPPER_EXTENSION
538 | app
539 | baseConfigurationReference
540 | E4EB6923138AFD0F00A09F29
541 |
542 | isa
543 | XCBuildConfiguration
544 | name
545 | Release
546 |
547 | E4B69E1C0A3A1BDC003C02F2
548 |
549 | children
550 |
551 | E4B69E1D0A3A1BDC003C02F2
552 | E4B69E1E0A3A1BDC003C02F2
553 | E4B69E1F0A3A1BDC003C02F2
554 |
555 | isa
556 | PBXGroup
557 | path
558 | src
559 | sourceTree
560 | SOURCE_ROOT
561 |
562 | E4B69E1D0A3A1BDC003C02F2
563 |
564 | fileEncoding
565 | 30
566 | isa
567 | PBXFileReference
568 | lastKnownFileType
569 | sourcecode.cpp.cpp
570 | name
571 | main.cpp
572 | path
573 | src/main.cpp
574 | sourceTree
575 | SOURCE_ROOT
576 |
577 | E4B69E1E0A3A1BDC003C02F2
578 |
579 | explicitFileType
580 | sourcecode.cpp.cpp
581 | fileEncoding
582 | 30
583 | isa
584 | PBXFileReference
585 | name
586 | ofApp.cpp
587 | path
588 | src/ofApp.cpp
589 | sourceTree
590 | SOURCE_ROOT
591 |
592 | E4B69E1F0A3A1BDC003C02F2
593 |
594 | fileEncoding
595 | 30
596 | isa
597 | PBXFileReference
598 | lastKnownFileType
599 | sourcecode.c.h
600 | name
601 | ofApp.h
602 | path
603 | src/ofApp.h
604 | sourceTree
605 | SOURCE_ROOT
606 |
607 | E4B69E200A3A1BDC003C02F2
608 |
609 | fileRef
610 | E4B69E1D0A3A1BDC003C02F2
611 | isa
612 | PBXBuildFile
613 |
614 | E4B69E210A3A1BDC003C02F2
615 |
616 | fileRef
617 | E4B69E1E0A3A1BDC003C02F2
618 | isa
619 | PBXBuildFile
620 |
621 | E4B6FCAD0C3E899E008CF71C
622 |
623 | fileEncoding
624 | 30
625 | isa
626 | PBXFileReference
627 | lastKnownFileType
628 | text.plist.xml
629 | path
630 | openFrameworks-Info.plist
631 | sourceTree
632 | <group>
633 |
634 | E4B6FFFD0C3F9AB9008CF71C
635 |
636 | buildActionMask
637 | 2147483647
638 | files
639 |
640 | inputPaths
641 |
642 | isa
643 | PBXShellScriptBuildPhase
644 | outputPaths
645 |
646 | runOnlyForDeploymentPostprocessing
647 | 0
648 | shellPath
649 | /bin/sh
650 | shellScript
651 | mkdir -p "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/"
652 | # Copy default icon file into App/Resources
653 | rsync -aved "$ICON_FILE" "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/"
654 | # Copy libfmod and change install directory for fmod to run
655 | rsync -aved ../../../../libs/fmodex/lib/osx/libfmodex.dylib "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Frameworks/";
656 | install_name_tool -change @executable_path/libfmodex.dylib @executable_path/../Frameworks/libfmodex.dylib "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME";
657 | # Copy GLUT framework (must remove for AppStore submissions)
658 | rsync -aved ../../../../libs/glut/lib/osx/GLUT.framework "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Frameworks/"
659 |
660 |
661 | E4C2427710CC5ABF004149E2
662 |
663 | buildActionMask
664 | 2147483647
665 | dstPath
666 |
667 | dstSubfolderSpec
668 | 10
669 | files
670 |
671 | isa
672 | PBXCopyFilesBuildPhase
673 | runOnlyForDeploymentPostprocessing
674 | 0
675 |
676 | E4EB691F138AFCF100A09F29
677 |
678 | fileEncoding
679 | 4
680 | isa
681 | PBXFileReference
682 | lastKnownFileType
683 | text.xcconfig
684 | name
685 | CoreOF.xcconfig
686 | path
687 | ../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig
688 | sourceTree
689 | SOURCE_ROOT
690 |
691 | E4EB6923138AFD0F00A09F29
692 |
693 | fileEncoding
694 | 4
695 | isa
696 | PBXFileReference
697 | lastKnownFileType
698 | text.xcconfig
699 | path
700 | Project.xcconfig
701 | sourceTree
702 | <group>
703 |
704 | E4EEB9AB138B136A00A80321
705 |
706 | containerPortal
707 | E4328143138ABC890047C5CB
708 | isa
709 | PBXContainerItemProxy
710 | proxyType
711 | 1
712 | remoteGlobalIDString
713 | E4B27C1410CBEB8E00536013
714 | remoteInfo
715 | openFrameworks
716 |
717 | E4EEB9AC138B136A00A80321
718 |
719 | isa
720 | PBXTargetDependency
721 | name
722 | openFrameworks
723 | targetProxy
724 | E4EEB9AB138B136A00A80321
725 |
726 | E4EEC9E9138DF44700A80321
727 |
728 | children
729 |
730 | E4EB691F138AFCF100A09F29
731 | E4328143138ABC890047C5CB
732 |
733 | isa
734 | PBXGroup
735 | name
736 | openFrameworks
737 | sourceTree
738 | <group>
739 |
740 |
741 | rootObject
742 | E4B69B4C0A3A1720003C02F2
743 |
744 |
745 |
--------------------------------------------------------------------------------
/examples/example_mesh/example_mesh.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/example_mesh/example_mesh.xcodeproj/xcshareddata/xcschemes/example_mesh Debug.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
51 |
52 |
58 |
59 |
60 |
61 |
62 |
63 |
69 |
70 |
76 |
77 |
78 |
79 |
81 |
82 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/examples/example_mesh/example_mesh.xcodeproj/xcshareddata/xcschemes/example_mesh Release.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
51 |
52 |
58 |
59 |
60 |
61 |
62 |
63 |
69 |
70 |
76 |
77 |
78 |
79 |
81 |
82 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/examples/example_mesh/openFrameworks-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | cc.openFrameworks.ofapp
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | APPL
15 | CFBundleSignature
16 | ????
17 | CFBundleVersion
18 | 1.0
19 | CFBundleIconFile
20 | ${ICON}
21 |
22 |
23 |
--------------------------------------------------------------------------------
/examples/example_mesh/src/main.cpp:
--------------------------------------------------------------------------------
1 | #include "ofMain.h"
2 | #include "ofApp.h"
3 |
4 | //========================================================================
5 | int main( ){
6 | ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context
7 |
8 | // this kicks off the running of my app
9 | // can be OF_WINDOW or OF_FULLSCREEN
10 | // pass in width and height too:
11 | ofRunApp(new ofApp());
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/examples/example_mesh/src/ofApp.cpp:
--------------------------------------------------------------------------------
1 | #include "ofApp.h"
2 |
3 | //--------------------------------------------------------------
4 | void ofApp::setup(){
5 | ofBackground(0);
6 | ofSetVerticalSync(true);
7 | ofEnableDepthTest();
8 |
9 | /*
10 | ofEasyCam
11 | */
12 | cam.setupPerspective(true, 60, 10, 0, ofVec2f(0.0, 0.0));
13 | cam.setDistance(250);
14 |
15 | /*
16 | ofxReactionDiffusion
17 | */
18 | scale = 3.0;
19 |
20 | rd.allocate(ofGetWidth(), ofGetHeight(), scale);
21 | rd.setPasses(0.998265);
22 | rd.setGrayScottParams(0.0239133, 0.0501276, 0.178571, 0.212041);
23 |
24 | /// add Initial Sources
25 | rd.getSourceFbo().begin();
26 | ofSetColor(0, 0, 200);
27 | ofDrawRectangle(100, 100, 100, 100);
28 | rd.getSourceFbo().end();
29 |
30 | /*
31 | Mesh
32 | */
33 | mesh.setMode(OF_PRIMITIVE_POINTS);
34 |
35 | for (int y = 0; y < ofGetHeight()/scale; y++) {
36 | for (int x = 0; x < ofGetWidth()/scale; x++) {
37 | mesh.addVertex(ofVec3f(0, 0, 0));
38 | mesh.addTexCoord(ofVec2f(y, x));
39 | mesh.addColor(ofFloatColor(1.0));
40 | }
41 | }
42 |
43 | /// Shader
44 | string updatePosVert = STRINGIFY(
45 | uniform sampler2DRect sourceTex;
46 | uniform sampler2DRect colorTex;
47 |
48 | void main() {
49 | vec2 st = gl_MultiTexCoord0.st;
50 |
51 | vec3 pos = vec3(st.x, st.y, texture2DRect(sourceTex, st).b * 50.0);
52 | vec3 color = texture2DRect(colorTex, st).rgb;
53 |
54 | gl_FrontColor = vec4(color, 1.0);
55 | gl_PointSize = 1.0;
56 | gl_Position = gl_ModelViewProjectionMatrix * vec4(pos, 1.0);
57 | }
58 | );
59 | updatePosShader.setupShaderFromSource(GL_VERTEX_SHADER, updatePosVert);
60 | updatePosShader.linkProgram();
61 |
62 | }
63 |
64 | //--------------------------------------------------------------
65 | void ofApp::update(){
66 | rd.update();
67 | }
68 |
69 | //--------------------------------------------------------------
70 | void ofApp::draw(){
71 | ofSetWindowTitle(ofToString(ofGetFrameRate()));
72 |
73 | cam.begin();
74 | ofPushStyle();
75 |
76 | ofTranslate(160, -80);
77 | ofRotateX(60);
78 | ofRotateZ(90);
79 |
80 | updatePosShader.begin();
81 | updatePosShader.setUniformTexture("sourceTex", rd.getSourceTexture(), 0);
82 | updatePosShader.setUniformTexture("colorTex", rd.getColorTexture(), 1);
83 | mesh.draw();
84 | updatePosShader.end();
85 |
86 | ofPopStyle();
87 | cam.end();
88 | }
89 |
90 | //--------------------------------------------------------------
91 | void ofApp::keyPressed(int key){
92 |
93 | }
94 |
95 | //--------------------------------------------------------------
96 | void ofApp::keyReleased(int key){
97 |
98 | }
99 |
100 | //--------------------------------------------------------------
101 | void ofApp::mouseMoved(int x, int y ){
102 |
103 | }
104 |
105 | //--------------------------------------------------------------
106 | void ofApp::mouseDragged(int x, int y, int button){
107 |
108 | }
109 |
110 | //--------------------------------------------------------------
111 | void ofApp::mousePressed(int x, int y, int button){
112 |
113 | }
114 |
115 | //--------------------------------------------------------------
116 | void ofApp::mouseReleased(int x, int y, int button){
117 |
118 | }
119 |
120 | //--------------------------------------------------------------
121 | void ofApp::mouseEntered(int x, int y){
122 |
123 | }
124 |
125 | //--------------------------------------------------------------
126 | void ofApp::mouseExited(int x, int y){
127 |
128 | }
129 |
130 | //--------------------------------------------------------------
131 | void ofApp::windowResized(int w, int h){
132 |
133 | }
134 |
135 | //--------------------------------------------------------------
136 | void ofApp::gotMessage(ofMessage msg){
137 |
138 | }
139 |
140 | //--------------------------------------------------------------
141 | void ofApp::dragEvent(ofDragInfo dragInfo){
142 |
143 | }
144 |
--------------------------------------------------------------------------------
/examples/example_mesh/src/ofApp.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "ofMain.h"
4 | #include "ofxReactionDiffusion.h"
5 |
6 | class ofApp : public ofBaseApp{
7 |
8 | public:
9 | void setup();
10 | void update();
11 | void draw();
12 |
13 | void keyPressed(int key);
14 | void keyReleased(int key);
15 | void mouseMoved(int x, int y );
16 | void mouseDragged(int x, int y, int button);
17 | void mousePressed(int x, int y, int button);
18 | void mouseReleased(int x, int y, int button);
19 | void mouseEntered(int x, int y);
20 | void mouseExited(int x, int y);
21 | void windowResized(int w, int h);
22 | void dragEvent(ofDragInfo dragInfo);
23 | void gotMessage(ofMessage msg);
24 |
25 | float scale;
26 |
27 | ofxReactionDiffusion rd;
28 | ofVboMesh mesh;
29 | ofEasyCam cam;
30 |
31 | ofShader updatePosShader;
32 | };
33 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/Makefile:
--------------------------------------------------------------------------------
1 | # Attempt to load a config.make file.
2 | # If none is found, project defaults in config.project.make will be used.
3 | ifneq ($(wildcard config.make),)
4 | include config.make
5 | endif
6 |
7 | # make sure the the OF_ROOT location is defined
8 | ifndef OF_ROOT
9 | OF_ROOT=$(realpath ../../../..)
10 | endif
11 |
12 | # call the project makefile!
13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk
14 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/Project.xcconfig:
--------------------------------------------------------------------------------
1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT.
2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED
3 | OF_PATH = ../../../..
4 |
5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE
6 | #include "../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig"
7 |
8 | //ICONS - NEW IN 0072
9 | ICON_NAME_DEBUG = icon-debug.icns
10 | ICON_NAME_RELEASE = icon.icns
11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/
12 |
13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to:
14 | //ICON_FILE_PATH = bin/data/
15 |
16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS)
17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS)
18 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/addons.make:
--------------------------------------------------------------------------------
1 | ofxGui
2 | ofxReactionDiffusion
3 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/bin/data/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matsune/ofxReactionDiffusion/63907476971c55bb2ad5f15716e91e26d2ecb6bb/examples/example_ofxGui/bin/data/.gitkeep
--------------------------------------------------------------------------------
/examples/example_ofxGui/config.make:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # CONFIGURE PROJECT MAKEFILE (optional)
3 | # This file is where we make project specific configurations.
4 | ################################################################################
5 |
6 | ################################################################################
7 | # OF ROOT
8 | # The location of your root openFrameworks installation
9 | # (default) OF_ROOT = ../../../..
10 | ################################################################################
11 | # OF_ROOT = ../../../..
12 |
13 | ################################################################################
14 | # PROJECT ROOT
15 | # The location of the project - a starting place for searching for files
16 | # (default) PROJECT_ROOT = . (this directory)
17 | #
18 | ################################################################################
19 | # PROJECT_ROOT = .
20 |
21 | ################################################################################
22 | # PROJECT SPECIFIC CHECKS
23 | # This is a project defined section to create internal makefile flags to
24 | # conditionally enable or disable the addition of various features within
25 | # this makefile. For instance, if you want to make changes based on whether
26 | # GTK is installed, one might test that here and create a variable to check.
27 | ################################################################################
28 | # None
29 |
30 | ################################################################################
31 | # PROJECT EXTERNAL SOURCE PATHS
32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder.
33 | # Like source folders in the PROJECT_ROOT, these paths are subject to
34 | # exlclusion via the PROJECT_EXLCUSIONS list.
35 | #
36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
37 | #
38 | # Note: Leave a leading space when adding list items with the += operator
39 | ################################################################################
40 | # PROJECT_EXTERNAL_SOURCE_PATHS =
41 |
42 | ################################################################################
43 | # PROJECT EXCLUSIONS
44 | # These makefiles assume that all folders in your current project directory
45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
46 | # to look for source code. The any folders or files that match any of the
47 | # items in the PROJECT_EXCLUSIONS list below will be ignored.
48 | #
49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
50 | # string unless teh user adds a wildcard (%) operator to match subdirectories.
51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is
52 | # treated literally.
53 | #
54 | # (default) PROJECT_EXCLUSIONS = (blank)
55 | #
56 | # Will automatically exclude the following:
57 | #
58 | # $(PROJECT_ROOT)/bin%
59 | # $(PROJECT_ROOT)/obj%
60 | # $(PROJECT_ROOT)/%.xcodeproj
61 | #
62 | # Note: Leave a leading space when adding list items with the += operator
63 | ################################################################################
64 | # PROJECT_EXCLUSIONS =
65 |
66 | ################################################################################
67 | # PROJECT LINKER FLAGS
68 | # These flags will be sent to the linker when compiling the executable.
69 | #
70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs
71 | #
72 | # Note: Leave a leading space when adding list items with the += operator
73 | ################################################################################
74 |
75 | # Currently, shared libraries that are needed are copied to the
76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
77 | # add a runtime path to search for those shared libraries, since they aren't
78 | # incorporated directly into the final executable application binary.
79 | # TODO: should this be a default setting?
80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs
81 |
82 | ################################################################################
83 | # PROJECT DEFINES
84 | # Create a space-delimited list of DEFINES. The list will be converted into
85 | # CFLAGS with the "-D" flag later in the makefile.
86 | #
87 | # (default) PROJECT_DEFINES = (blank)
88 | #
89 | # Note: Leave a leading space when adding list items with the += operator
90 | ################################################################################
91 | # PROJECT_DEFINES =
92 |
93 | ################################################################################
94 | # PROJECT CFLAGS
95 | # This is a list of fully qualified CFLAGS required when compiling for this
96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
97 | # defined in your platform specific core configuration files. These flags are
98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
99 | #
100 | # (default) PROJECT_CFLAGS = (blank)
101 | #
102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
103 | # your platform specific configuration file will be applied by default and
104 | # further flags here may not be needed.
105 | #
106 | # Note: Leave a leading space when adding list items with the += operator
107 | ################################################################################
108 | # PROJECT_CFLAGS =
109 |
110 | ################################################################################
111 | # PROJECT OPTIMIZATION CFLAGS
112 | # These are lists of CFLAGS that are target-specific. While any flags could
113 | # be conditionally added, they are usually limited to optimization flags.
114 | # These flags are added BEFORE the PROJECT_CFLAGS.
115 | #
116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
117 | #
118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank)
119 | #
120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets.
121 | #
122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
123 | #
124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
126 | # file will be applied by default and further optimization flags here may not
127 | # be needed.
128 | #
129 | # Note: Leave a leading space when adding list items with the += operator
130 | ################################################################################
131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
133 |
134 | ################################################################################
135 | # PROJECT COMPILERS
136 | # Custom compilers can be set for CC and CXX
137 | # (default) PROJECT_CXX = (blank)
138 | # (default) PROJECT_CC = (blank)
139 | # Note: Leave a leading space when adding list items with the += operator
140 | ################################################################################
141 | # PROJECT_CXX =
142 | # PROJECT_CC =
143 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/example_ofxGui.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 106B9A6182DF98E835C09B47 /* ofxBaseGui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA20A4B3FEF378FA209B9E4E /* ofxBaseGui.cpp */; };
11 | 413B65A0F41D699F37AB4C06 /* ofxSliderGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 99B37C8367EB4811EEF8E78D /* ofxSliderGroup.cpp */; };
12 | 81BE400C35825643551A3190 /* ofxLabel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 73799D65360CD587DCAE90A0 /* ofxLabel.cpp */; };
13 | 8EFE04C2B8D70F4847663CD1 /* ofxReactionDiffusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F64C7E2A2802A2CE6079B69 /* ofxReactionDiffusion.cpp */; };
14 | A2953313263AE1234930247E /* ofxSlider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AEA7CD14AC4CC1AF68D59D19 /* ofxSlider.cpp */; };
15 | A61B54CA66E926867C59D2C6 /* ofxButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE859610F3926950EBBC8B13 /* ofxButton.cpp */; };
16 | B07D6C52C2FE371D2B91739E /* ofxToggle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E118568A6BABFFADB75DB858 /* ofxToggle.cpp */; };
17 | CE6F136678038366969711AB /* ofxPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27CE0445D02D803853EC74E8 /* ofxPanel.cpp */; };
18 | CFFFBA144E8160ECC1C97982 /* ofxGuiGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD6A6ADD1A79B85E833FBDF1 /* ofxGuiGroup.cpp */; };
19 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; };
20 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; };
21 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */; };
22 | /* End PBXBuildFile section */
23 |
24 | /* Begin PBXContainerItemProxy section */
25 | E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = {
26 | isa = PBXContainerItemProxy;
27 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */;
28 | proxyType = 2;
29 | remoteGlobalIDString = E4B27C1510CBEB8E00536013;
30 | remoteInfo = openFrameworks;
31 | };
32 | E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = {
33 | isa = PBXContainerItemProxy;
34 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */;
35 | proxyType = 1;
36 | remoteGlobalIDString = E4B27C1410CBEB8E00536013;
37 | remoteInfo = openFrameworks;
38 | };
39 | /* End PBXContainerItemProxy section */
40 |
41 | /* Begin PBXCopyFilesBuildPhase section */
42 | E4C2427710CC5ABF004149E2 /* CopyFiles */ = {
43 | isa = PBXCopyFilesBuildPhase;
44 | buildActionMask = 2147483647;
45 | dstPath = "";
46 | dstSubfolderSpec = 10;
47 | files = (
48 | );
49 | runOnlyForDeploymentPostprocessing = 0;
50 | };
51 | /* End PBXCopyFilesBuildPhase section */
52 |
53 | /* Begin PBXFileReference section */
54 | 0F64C7E2A2802A2CE6079B69 /* ofxReactionDiffusion.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxReactionDiffusion.cpp; path = ../../../../addons/ofxReactionDiffusion/src/ofxReactionDiffusion.cpp; sourceTree = SOURCE_ROOT; };
55 | 13308FAE1E0AD17D00F3477E /* PingPong.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PingPong.h; path = src/PingPong.h; sourceTree = ""; };
56 | 27CE0445D02D803853EC74E8 /* ofxPanel.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxPanel.cpp; path = ../../../../addons/ofxGui/src/ofxPanel.cpp; sourceTree = SOURCE_ROOT; };
57 | 44C0961009D36089EBA9C36F /* ofxGuiGroup.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxGuiGroup.h; path = ../../../../addons/ofxGui/src/ofxGuiGroup.h; sourceTree = SOURCE_ROOT; };
58 | 481083C90D96C0AAA580E194 /* ofxButton.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxButton.h; path = ../../../../addons/ofxGui/src/ofxButton.h; sourceTree = SOURCE_ROOT; };
59 | 4EBE44F173B46F539D0F4741 /* ofxPanel.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxPanel.h; path = ../../../../addons/ofxGui/src/ofxPanel.h; sourceTree = SOURCE_ROOT; };
60 | 607FCA3A979EBCF02F0B00FC /* ofxGui.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxGui.h; path = ../../../../addons/ofxGui/src/ofxGui.h; sourceTree = SOURCE_ROOT; };
61 | 73799D65360CD587DCAE90A0 /* ofxLabel.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxLabel.cpp; path = ../../../../addons/ofxGui/src/ofxLabel.cpp; sourceTree = SOURCE_ROOT; };
62 | 78F524ADA8DDC5DF3F460FA5 /* ofxToggle.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxToggle.h; path = ../../../../addons/ofxGui/src/ofxToggle.h; sourceTree = SOURCE_ROOT; };
63 | 99B37C8367EB4811EEF8E78D /* ofxSliderGroup.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxSliderGroup.cpp; path = ../../../../addons/ofxGui/src/ofxSliderGroup.cpp; sourceTree = SOURCE_ROOT; };
64 | AE859610F3926950EBBC8B13 /* ofxButton.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxButton.cpp; path = ../../../../addons/ofxGui/src/ofxButton.cpp; sourceTree = SOURCE_ROOT; };
65 | AEA7CD14AC4CC1AF68D59D19 /* ofxSlider.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxSlider.cpp; path = ../../../../addons/ofxGui/src/ofxSlider.cpp; sourceTree = SOURCE_ROOT; };
66 | BA20A4B3FEF378FA209B9E4E /* ofxBaseGui.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxBaseGui.cpp; path = ../../../../addons/ofxGui/src/ofxBaseGui.cpp; sourceTree = SOURCE_ROOT; };
67 | BD6A6ADD1A79B85E833FBDF1 /* ofxGuiGroup.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxGuiGroup.cpp; path = ../../../../addons/ofxGui/src/ofxGuiGroup.cpp; sourceTree = SOURCE_ROOT; };
68 | CC050FCE6035B4BAFB0D11B1 /* ofxSliderGroup.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxSliderGroup.h; path = ../../../../addons/ofxGui/src/ofxSliderGroup.h; sourceTree = SOURCE_ROOT; };
69 | D41FA502010DB4C51A4C1390 /* ofxSlider.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxSlider.h; path = ../../../../addons/ofxGui/src/ofxSlider.h; sourceTree = SOURCE_ROOT; };
70 | E118568A6BABFFADB75DB858 /* ofxToggle.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxToggle.cpp; path = ../../../../addons/ofxGui/src/ofxToggle.cpp; sourceTree = SOURCE_ROOT; };
71 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; };
72 | E4B69B5B0A3A1756003C02F2 /* example_ofxGuiDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example_ofxGuiDebug.app; sourceTree = BUILT_PRODUCTS_DIR; };
73 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; };
74 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofApp.cpp; path = src/ofApp.cpp; sourceTree = SOURCE_ROOT; };
75 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ofApp.h; path = src/ofApp.h; sourceTree = SOURCE_ROOT; };
76 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; };
77 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; };
78 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; };
79 | EE3013E1AD254D862ADCA585 /* ofxBaseGui.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxBaseGui.h; path = ../../../../addons/ofxGui/src/ofxBaseGui.h; sourceTree = SOURCE_ROOT; };
80 | F100E30570234E337922C10C /* ofxLabel.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxLabel.h; path = ../../../../addons/ofxGui/src/ofxLabel.h; sourceTree = SOURCE_ROOT; };
81 | F4CAC834D4B9076DC504621D /* ofxReactionDiffusion.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxReactionDiffusion.h; path = ../../../../addons/ofxReactionDiffusion/src/ofxReactionDiffusion.h; sourceTree = SOURCE_ROOT; };
82 | /* End PBXFileReference section */
83 |
84 | /* Begin PBXFrameworksBuildPhase section */
85 | E4B69B590A3A1756003C02F2 /* Frameworks */ = {
86 | isa = PBXFrameworksBuildPhase;
87 | buildActionMask = 2147483647;
88 | files = (
89 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */,
90 | );
91 | runOnlyForDeploymentPostprocessing = 0;
92 | };
93 | /* End PBXFrameworksBuildPhase section */
94 |
95 | /* Begin PBXGroup section */
96 | 12BA66A1958C3B17CF449C43 /* src */ = {
97 | isa = PBXGroup;
98 | children = (
99 | 13308FAE1E0AD17D00F3477E /* PingPong.h */,
100 | 0F64C7E2A2802A2CE6079B69 /* ofxReactionDiffusion.cpp */,
101 | F4CAC834D4B9076DC504621D /* ofxReactionDiffusion.h */,
102 | );
103 | name = src;
104 | sourceTree = "";
105 | };
106 | 43508BF48D4E7088028AEEAA /* ofxReactionDiffusion */ = {
107 | isa = PBXGroup;
108 | children = (
109 | 12BA66A1958C3B17CF449C43 /* src */,
110 | );
111 | name = ofxReactionDiffusion;
112 | sourceTree = "";
113 | };
114 | 480A780D8D0308AE4A368801 /* ofxGui */ = {
115 | isa = PBXGroup;
116 | children = (
117 | A763ED608B35AE3310251DEE /* src */,
118 | );
119 | name = ofxGui;
120 | sourceTree = "";
121 | };
122 | 6948EE371B920CB800B5AC1A /* local_addons */ = {
123 | isa = PBXGroup;
124 | children = (
125 | );
126 | name = local_addons;
127 | sourceTree = "";
128 | };
129 | A763ED608B35AE3310251DEE /* src */ = {
130 | isa = PBXGroup;
131 | children = (
132 | BA20A4B3FEF378FA209B9E4E /* ofxBaseGui.cpp */,
133 | EE3013E1AD254D862ADCA585 /* ofxBaseGui.h */,
134 | AE859610F3926950EBBC8B13 /* ofxButton.cpp */,
135 | 481083C90D96C0AAA580E194 /* ofxButton.h */,
136 | 607FCA3A979EBCF02F0B00FC /* ofxGui.h */,
137 | BD6A6ADD1A79B85E833FBDF1 /* ofxGuiGroup.cpp */,
138 | 44C0961009D36089EBA9C36F /* ofxGuiGroup.h */,
139 | 73799D65360CD587DCAE90A0 /* ofxLabel.cpp */,
140 | F100E30570234E337922C10C /* ofxLabel.h */,
141 | 27CE0445D02D803853EC74E8 /* ofxPanel.cpp */,
142 | 4EBE44F173B46F539D0F4741 /* ofxPanel.h */,
143 | AEA7CD14AC4CC1AF68D59D19 /* ofxSlider.cpp */,
144 | D41FA502010DB4C51A4C1390 /* ofxSlider.h */,
145 | 99B37C8367EB4811EEF8E78D /* ofxSliderGroup.cpp */,
146 | CC050FCE6035B4BAFB0D11B1 /* ofxSliderGroup.h */,
147 | E118568A6BABFFADB75DB858 /* ofxToggle.cpp */,
148 | 78F524ADA8DDC5DF3F460FA5 /* ofxToggle.h */,
149 | );
150 | name = src;
151 | sourceTree = "";
152 | };
153 | BB4B014C10F69532006C3DED /* addons */ = {
154 | isa = PBXGroup;
155 | children = (
156 | 480A780D8D0308AE4A368801 /* ofxGui */,
157 | 43508BF48D4E7088028AEEAA /* ofxReactionDiffusion */,
158 | );
159 | name = addons;
160 | sourceTree = "";
161 | };
162 | E4328144138ABC890047C5CB /* Products */ = {
163 | isa = PBXGroup;
164 | children = (
165 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */,
166 | );
167 | name = Products;
168 | sourceTree = "";
169 | };
170 | E4B69B4A0A3A1720003C02F2 = {
171 | isa = PBXGroup;
172 | children = (
173 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */,
174 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */,
175 | E4B69E1C0A3A1BDC003C02F2 /* src */,
176 | E4EEC9E9138DF44700A80321 /* openFrameworks */,
177 | BB4B014C10F69532006C3DED /* addons */,
178 | 6948EE371B920CB800B5AC1A /* local_addons */,
179 | E4B69B5B0A3A1756003C02F2 /* example_ofxGuiDebug.app */,
180 | );
181 | sourceTree = "";
182 | };
183 | E4B69E1C0A3A1BDC003C02F2 /* src */ = {
184 | isa = PBXGroup;
185 | children = (
186 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */,
187 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */,
188 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */,
189 | );
190 | path = src;
191 | sourceTree = SOURCE_ROOT;
192 | };
193 | E4EEC9E9138DF44700A80321 /* openFrameworks */ = {
194 | isa = PBXGroup;
195 | children = (
196 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */,
197 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */,
198 | );
199 | name = openFrameworks;
200 | sourceTree = "";
201 | };
202 | /* End PBXGroup section */
203 |
204 | /* Begin PBXNativeTarget section */
205 | E4B69B5A0A3A1756003C02F2 /* example_ofxGui */ = {
206 | isa = PBXNativeTarget;
207 | buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example_ofxGui" */;
208 | buildPhases = (
209 | E4B69B580A3A1756003C02F2 /* Sources */,
210 | E4B69B590A3A1756003C02F2 /* Frameworks */,
211 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */,
212 | E4C2427710CC5ABF004149E2 /* CopyFiles */,
213 | );
214 | buildRules = (
215 | );
216 | dependencies = (
217 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */,
218 | );
219 | name = example_ofxGui;
220 | productName = myOFApp;
221 | productReference = E4B69B5B0A3A1756003C02F2 /* example_ofxGuiDebug.app */;
222 | productType = "com.apple.product-type.application";
223 | };
224 | /* End PBXNativeTarget section */
225 |
226 | /* Begin PBXProject section */
227 | E4B69B4C0A3A1720003C02F2 /* Project object */ = {
228 | isa = PBXProject;
229 | attributes = {
230 | LastUpgradeCheck = 0600;
231 | };
232 | buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example_ofxGui" */;
233 | compatibilityVersion = "Xcode 3.2";
234 | developmentRegion = English;
235 | hasScannedForEncodings = 0;
236 | knownRegions = (
237 | English,
238 | Japanese,
239 | French,
240 | German,
241 | );
242 | mainGroup = E4B69B4A0A3A1720003C02F2;
243 | productRefGroup = E4B69B4A0A3A1720003C02F2;
244 | projectDirPath = "";
245 | projectReferences = (
246 | {
247 | ProductGroup = E4328144138ABC890047C5CB /* Products */;
248 | ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */;
249 | },
250 | );
251 | projectRoot = "";
252 | targets = (
253 | E4B69B5A0A3A1756003C02F2 /* example_ofxGui */,
254 | );
255 | };
256 | /* End PBXProject section */
257 |
258 | /* Begin PBXReferenceProxy section */
259 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = {
260 | isa = PBXReferenceProxy;
261 | fileType = archive.ar;
262 | path = openFrameworksDebug.a;
263 | remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */;
264 | sourceTree = BUILT_PRODUCTS_DIR;
265 | };
266 | /* End PBXReferenceProxy section */
267 |
268 | /* Begin PBXShellScriptBuildPhase section */
269 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = {
270 | isa = PBXShellScriptBuildPhase;
271 | buildActionMask = 2147483647;
272 | files = (
273 | );
274 | inputPaths = (
275 | );
276 | outputPaths = (
277 | );
278 | runOnlyForDeploymentPostprocessing = 0;
279 | shellPath = /bin/sh;
280 | shellScript = "mkdir -p \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\n# Copy default icon file into App/Resources\nrsync -aved \"$ICON_FILE\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\n# Copy libfmod and change install directory for fmod to run\nrsync -aved ../../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Frameworks/\";\ninstall_name_tool -change @executable_path/libfmodex.dylib @executable_path/../Frameworks/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";\n# Copy GLUT framework (must remove for AppStore submissions)\nrsync -aved ../../../../libs/glut/lib/osx/GLUT.framework \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Frameworks/\"\n";
281 | };
282 | /* End PBXShellScriptBuildPhase section */
283 |
284 | /* Begin PBXSourcesBuildPhase section */
285 | E4B69B580A3A1756003C02F2 /* Sources */ = {
286 | isa = PBXSourcesBuildPhase;
287 | buildActionMask = 2147483647;
288 | files = (
289 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */,
290 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */,
291 | 106B9A6182DF98E835C09B47 /* ofxBaseGui.cpp in Sources */,
292 | A61B54CA66E926867C59D2C6 /* ofxButton.cpp in Sources */,
293 | CFFFBA144E8160ECC1C97982 /* ofxGuiGroup.cpp in Sources */,
294 | 81BE400C35825643551A3190 /* ofxLabel.cpp in Sources */,
295 | CE6F136678038366969711AB /* ofxPanel.cpp in Sources */,
296 | A2953313263AE1234930247E /* ofxSlider.cpp in Sources */,
297 | 413B65A0F41D699F37AB4C06 /* ofxSliderGroup.cpp in Sources */,
298 | B07D6C52C2FE371D2B91739E /* ofxToggle.cpp in Sources */,
299 | 8EFE04C2B8D70F4847663CD1 /* ofxReactionDiffusion.cpp in Sources */,
300 | );
301 | runOnlyForDeploymentPostprocessing = 0;
302 | };
303 | /* End PBXSourcesBuildPhase section */
304 |
305 | /* Begin PBXTargetDependency section */
306 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = {
307 | isa = PBXTargetDependency;
308 | name = openFrameworks;
309 | targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */;
310 | };
311 | /* End PBXTargetDependency section */
312 |
313 | /* Begin XCBuildConfiguration section */
314 | E4B69B4E0A3A1720003C02F2 /* Debug */ = {
315 | isa = XCBuildConfiguration;
316 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */;
317 | buildSettings = {
318 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/";
319 | COPY_PHASE_STRIP = NO;
320 | DEAD_CODE_STRIPPING = YES;
321 | GCC_AUTO_VECTORIZATION = YES;
322 | GCC_ENABLE_SSE3_EXTENSIONS = YES;
323 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES;
324 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
325 | GCC_OPTIMIZATION_LEVEL = 0;
326 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
327 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
328 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
329 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
330 | GCC_WARN_UNINITIALIZED_AUTOS = NO;
331 | GCC_WARN_UNUSED_VALUE = NO;
332 | GCC_WARN_UNUSED_VARIABLE = NO;
333 | HEADER_SEARCH_PATHS = (
334 | "$(OF_CORE_HEADERS)",
335 | ../../../../addons/ofxGui/src,
336 | ../../../../addons/ofxReactionDiffusion/src,
337 | );
338 | MACOSX_DEPLOYMENT_TARGET = 10.8;
339 | ONLY_ACTIVE_ARCH = YES;
340 | OTHER_CPLUSPLUSFLAGS = (
341 | "-D__MACOSX_CORE__",
342 | "-mtune=native",
343 | );
344 | SDKROOT = macosx;
345 | };
346 | name = Debug;
347 | };
348 | E4B69B4F0A3A1720003C02F2 /* Release */ = {
349 | isa = XCBuildConfiguration;
350 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */;
351 | buildSettings = {
352 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/";
353 | COPY_PHASE_STRIP = YES;
354 | DEAD_CODE_STRIPPING = YES;
355 | GCC_AUTO_VECTORIZATION = YES;
356 | GCC_ENABLE_SSE3_EXTENSIONS = YES;
357 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES;
358 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
359 | GCC_OPTIMIZATION_LEVEL = 3;
360 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
361 | GCC_UNROLL_LOOPS = YES;
362 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
363 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
364 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
365 | GCC_WARN_UNINITIALIZED_AUTOS = NO;
366 | GCC_WARN_UNUSED_VALUE = NO;
367 | GCC_WARN_UNUSED_VARIABLE = NO;
368 | HEADER_SEARCH_PATHS = (
369 | "$(OF_CORE_HEADERS)",
370 | ../../../../addons/ofxGui/src,
371 | ../../../../addons/ofxReactionDiffusion/src,
372 | );
373 | MACOSX_DEPLOYMENT_TARGET = 10.8;
374 | OTHER_CPLUSPLUSFLAGS = (
375 | "-D__MACOSX_CORE__",
376 | "-mtune=native",
377 | );
378 | SDKROOT = macosx;
379 | };
380 | name = Release;
381 | };
382 | E4B69B600A3A1757003C02F2 /* Debug */ = {
383 | isa = XCBuildConfiguration;
384 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */;
385 | buildSettings = {
386 | COMBINE_HIDPI_IMAGES = YES;
387 | COPY_PHASE_STRIP = NO;
388 | FRAMEWORK_SEARCH_PATHS = (
389 | "$(inherited)",
390 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
391 | );
392 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../../libs/glut/lib/osx\"";
393 | GCC_DYNAMIC_NO_PIC = NO;
394 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
395 | GCC_MODEL_TUNING = NONE;
396 | HEADER_SEARCH_PATHS = (
397 | "$(OF_CORE_HEADERS)",
398 | ../../../../addons/ofxGui/src,
399 | ../../../../addons/ofxReactionDiffusion/src,
400 | );
401 | ICON = "$(ICON_NAME_DEBUG)";
402 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)";
403 | INFOPLIST_FILE = "openFrameworks-Info.plist";
404 | INSTALL_PATH = /Applications;
405 | LIBRARY_SEARCH_PATHS = "$(inherited)";
406 | PRODUCT_NAME = "$(TARGET_NAME)Debug";
407 | WRAPPER_EXTENSION = app;
408 | };
409 | name = Debug;
410 | };
411 | E4B69B610A3A1757003C02F2 /* Release */ = {
412 | isa = XCBuildConfiguration;
413 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */;
414 | buildSettings = {
415 | COMBINE_HIDPI_IMAGES = YES;
416 | COPY_PHASE_STRIP = YES;
417 | FRAMEWORK_SEARCH_PATHS = (
418 | "$(inherited)",
419 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
420 | );
421 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../../libs/glut/lib/osx\"";
422 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
423 | GCC_MODEL_TUNING = NONE;
424 | HEADER_SEARCH_PATHS = (
425 | "$(OF_CORE_HEADERS)",
426 | ../../../../addons/ofxGui/src,
427 | ../../../../addons/ofxReactionDiffusion/src,
428 | );
429 | ICON = "$(ICON_NAME_RELEASE)";
430 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)";
431 | INFOPLIST_FILE = "openFrameworks-Info.plist";
432 | INSTALL_PATH = /Applications;
433 | LIBRARY_SEARCH_PATHS = "$(inherited)";
434 | PRODUCT_NAME = "$(TARGET_NAME)";
435 | WRAPPER_EXTENSION = app;
436 | baseConfigurationReference = E4EB6923138AFD0F00A09F29;
437 | };
438 | name = Release;
439 | };
440 | /* End XCBuildConfiguration section */
441 |
442 | /* Begin XCConfigurationList section */
443 | E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example_ofxGui" */ = {
444 | isa = XCConfigurationList;
445 | buildConfigurations = (
446 | E4B69B4E0A3A1720003C02F2 /* Debug */,
447 | E4B69B4F0A3A1720003C02F2 /* Release */,
448 | );
449 | defaultConfigurationIsVisible = 0;
450 | defaultConfigurationName = Release;
451 | };
452 | E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example_ofxGui" */ = {
453 | isa = XCConfigurationList;
454 | buildConfigurations = (
455 | E4B69B600A3A1757003C02F2 /* Debug */,
456 | E4B69B610A3A1757003C02F2 /* Release */,
457 | );
458 | defaultConfigurationIsVisible = 0;
459 | defaultConfigurationName = Release;
460 | };
461 | /* End XCConfigurationList section */
462 | };
463 | rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */;
464 | }
465 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/example_ofxGui.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/example_ofxGui.xcodeproj/xcshareddata/xcschemes/example_ofxGui Debug.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
51 |
52 |
58 |
59 |
60 |
61 |
62 |
63 |
69 |
70 |
76 |
77 |
78 |
79 |
81 |
82 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/example_ofxGui.xcodeproj/xcshareddata/xcschemes/example_ofxGui Release.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
51 |
52 |
58 |
59 |
60 |
61 |
62 |
63 |
69 |
70 |
76 |
77 |
78 |
79 |
81 |
82 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/openFrameworks-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | cc.openFrameworks.ofapp
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | APPL
15 | CFBundleSignature
16 | ????
17 | CFBundleVersion
18 | 1.0
19 | CFBundleIconFile
20 | ${ICON}
21 |
22 |
23 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/src/PingPong.h:
--------------------------------------------------------------------------------
1 | #ifndef PingPong_h
2 | #define PingPong_h
3 |
4 | struct PingPong {
5 | public:
6 | void allocate( int _width, int _height, int _internalformat = GL_RGBA, int _numColorBuffers = 1){
7 | // Allocate
8 | ofFbo::Settings fboSettings;
9 | fboSettings.width = _width;
10 | fboSettings.height = _height;
11 | fboSettings.numColorbuffers = _numColorBuffers;
12 | fboSettings.useDepth = false;
13 | fboSettings.internalformat = _internalformat; // Gotta store the data as floats, they won't be clamped to 0..1
14 | fboSettings.wrapModeHorizontal = GL_CLAMP_TO_EDGE;
15 | fboSettings.wrapModeVertical = GL_CLAMP_TO_EDGE;
16 | fboSettings.minFilter = GL_NEAREST; // No interpolation, that would mess up data reads later!
17 | fboSettings.maxFilter = GL_NEAREST;
18 | for(int i = 0; i < 2; i++){
19 | FBOs[i].allocate(fboSettings);
20 | }
21 |
22 | // Clean
23 | clear();
24 |
25 | // Set everything to 0
26 | flag = 0;
27 | swap();
28 | flag = 0;
29 | }
30 |
31 | void swap(){
32 | src = &(FBOs[(flag)%2]);
33 | dst = &(FBOs[++(flag)%2]);
34 | }
35 |
36 | void clear(){
37 | for(int i = 0; i < 2; i++){
38 | FBOs[i].begin();
39 | ofClear(0,255);
40 | FBOs[i].end();
41 | }
42 | }
43 |
44 | ofFbo& operator[]( int n ){ return FBOs[n];}
45 |
46 | ofFbo *src; // Source -> Ping
47 | ofFbo *dst; // Destination -> Pong
48 | private:
49 | ofFbo FBOs[2]; // Real addresses of ping/pong FBO´s
50 | int flag; // Integer for making a quick swap
51 | };
52 |
53 | #endif
--------------------------------------------------------------------------------
/examples/example_ofxGui/src/main.cpp:
--------------------------------------------------------------------------------
1 | #include "ofMain.h"
2 | #include "ofApp.h"
3 |
4 | //========================================================================
5 | int main( ){
6 | ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context
7 |
8 | // this kicks off the running of my app
9 | // can be OF_WINDOW or OF_FULLSCREEN
10 | // pass in width and height too:
11 | ofRunApp(new ofApp());
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/src/ofApp.cpp:
--------------------------------------------------------------------------------
1 | #include "ofApp.h"
2 |
3 | //--------------------------------------------------------------
4 | void ofApp::setup(){
5 | ofSetBackgroundColor(0);
6 | ofSetFrameRate(60);
7 |
8 | rd.allocate(ofGetWidth(), ofGetHeight());
9 |
10 | gui.setup();
11 | gui.setName("Parameters");
12 | gui.add(mode.setup("Mode", 0, 0, 2));
13 | gui.add(passes.setup("Passes", rd.getPasses(), 0.01, 2));
14 | gui.add(clearButton.setup("Clear"));
15 | clearButton.addListener(this, &ofApp::clear);
16 |
17 | gui.add(gs.setup());
18 | gs.setName("Gray Scott");
19 | gs.add(feed.setup("Feed", rd.getFeed(), 0, 0.5));
20 | gs.add(kill.setup("Kill", rd.getKill(), 0, 0.5));
21 | gs.add(Du.setup("Du", rd.getDu(), 0, 0.5));
22 | gs.add(Dv.setup("Dv", rd.getDv(), 0, 0.5));
23 |
24 | gui.add(fhn.setup());
25 | fhn.setName("Fitz-Hugh Nagumo");
26 | fhn.add(a0.setup("a0", rd.getA0(), 0, 1.0));
27 | fhn.add(a1.setup("a1", rd.getA1(), 0, 1.0));
28 | fhn.add(epsilon.setup("Epsilon", rd.getEpsilon(), 0, 1.5));
29 | fhn.add(delta.setup("Delta", rd.getDelta(), 0, 1.0));
30 | fhn.add(k1.setup("K1", rd.getK1(), 0.001, 3.0));
31 | fhn.add(k2.setup("K2", rd.getK2(), 0.001, 3.0));
32 | fhn.add(k3.setup("K3", rd.getK3(), 0.001, 3.0));
33 |
34 | gui.add(bz.setup());
35 | bz.setName("Belousov Zhabotinsky");
36 | bz.add(alpha.setup("Alpha", rd.getAlpha(), -5.0, 5.0));
37 | bz.add(beta.setup("Beta", rd.getBeta(), -5.0, 5.0));
38 | bz.add(gamma.setup("Gamma", rd.getGamma(), -5.0, 5.0));
39 |
40 | colors.setup();
41 | colors.setPosition(ofGetWidth() - colors.getWidth(), 0);
42 | colors.setName("Colors");
43 | colors.add(color1.setup("Color 1", 0.0 , 0, 1.0));
44 | colors.add(thresh1.setup("Thresh 1", 0.0 , 0, 1.0));
45 | colors.add(color2.setup("Color 2", 0.25, 0, 1.0));
46 | colors.add(thresh2.setup("Thresh 2", 0.2 , 0, 1.0));
47 | colors.add(color3.setup("Color 3", 0.5 , 0, 1.0));
48 | colors.add(thresh3.setup("Thresh 3", 0.4 , 0, 1.0));
49 | colors.add(color4.setup("Color 4", 0.75, 0, 1.0));
50 | colors.add(thresh4.setup("Thresh 4", 0.6 , 0, 1.0));
51 | colors.add(color5.setup("Color 5", 1.0 , 0, 1.0));
52 | colors.add(thresh5.setup("Thresh 5", 0.8 , 0, 1.0));
53 |
54 | color1 = rd.getColor1();
55 | color2 = rd.getColor2();
56 | color3 = rd.getColor3();
57 | color4 = rd.getColor4();
58 | color5 = rd.getColor5();
59 | }
60 |
61 | void ofApp::clear() {
62 | rd.clearAll();
63 | }
64 |
65 | //--------------------------------------------------------------
66 | void ofApp::update(){
67 | rd.setPasses(passes);
68 |
69 | switch (mode) {
70 | case 0:
71 | rd.setMode(RD_MODE_GRAY_SCOTT);
72 | rd.setGrayScottParams(feed, kill, Du, Dv);
73 | break;
74 | case 1:
75 | rd.setMode(RD_MODE_FITZHUGH_NAGUMO);
76 | rd.setFhnParams(a0, a1, epsilon, delta, k1, k2, k3);
77 | break;
78 | case 2:
79 | rd.setMode(RD_MODE_BELOUSOV_ZHABOTINSKY);
80 | rd.setBzParams(alpha, beta, gamma);
81 | break;
82 | default:
83 | break;
84 | }
85 |
86 | rd.setColor1(color1);
87 | rd.setColor1Threshold(thresh1);
88 | rd.setColor2(color2);
89 | rd.setColor2Threshold(thresh2);
90 | rd.setColor3(color3);
91 | rd.setColor3Threshold(thresh3);
92 | rd.setColor4(color4);
93 | rd.setColor4Threshold(thresh4);
94 | rd.setColor5(color5);
95 | rd.setColor5Threshold(thresh5);
96 |
97 | rd.update();
98 | }
99 |
100 | //--------------------------------------------------------------
101 | void ofApp::draw(){
102 | rd.draw();
103 |
104 | gui.draw();
105 |
106 | colors.draw();
107 | }
108 |
109 | //--------------------------------------------------------------
110 | void ofApp::keyPressed(int key){
111 |
112 | }
113 |
114 | //--------------------------------------------------------------
115 | void ofApp::keyReleased(int key){
116 |
117 | }
118 |
119 | //--------------------------------------------------------------
120 | void ofApp::mouseMoved(int x, int y ){
121 |
122 | }
123 |
124 | //--------------------------------------------------------------
125 | void ofApp::mouseDragged(int x, int y, int button){
126 | if (button == 0) {
127 | rd.addSource(x, y, 5);
128 | } else if (button == 2) {
129 | rd.addObstacle(x, y, 5);
130 | }
131 | }
132 |
133 | //--------------------------------------------------------------
134 | void ofApp::mousePressed(int x, int y, int button){
135 |
136 | }
137 |
138 | //--------------------------------------------------------------
139 | void ofApp::mouseReleased(int x, int y, int button){
140 |
141 | }
142 |
143 | //--------------------------------------------------------------
144 | void ofApp::mouseEntered(int x, int y){
145 |
146 | }
147 |
148 | //--------------------------------------------------------------
149 | void ofApp::mouseExited(int x, int y){
150 |
151 | }
152 |
153 | //--------------------------------------------------------------
154 | void ofApp::windowResized(int w, int h){
155 |
156 | }
157 |
158 | //--------------------------------------------------------------
159 | void ofApp::gotMessage(ofMessage msg){
160 |
161 | }
162 |
163 | //--------------------------------------------------------------
164 | void ofApp::dragEvent(ofDragInfo dragInfo){
165 |
166 | }
167 |
--------------------------------------------------------------------------------
/examples/example_ofxGui/src/ofApp.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "ofMain.h"
4 | #include "ofxGui.h"
5 | #include "ofxReactionDiffusion.h"
6 |
7 | class ofApp : public ofBaseApp{
8 |
9 | public:
10 | void setup();
11 | void update();
12 | void draw();
13 |
14 | void keyPressed(int key);
15 | void keyReleased(int key);
16 | void mouseMoved(int x, int y );
17 | void mouseDragged(int x, int y, int button);
18 | void mousePressed(int x, int y, int button);
19 | void mouseReleased(int x, int y, int button);
20 | void mouseEntered(int x, int y);
21 | void mouseExited(int x, int y);
22 | void windowResized(int w, int h);
23 | void dragEvent(ofDragInfo dragInfo);
24 | void gotMessage(ofMessage msg);
25 |
26 | void clear();
27 |
28 | ofxReactionDiffusion rd;
29 |
30 |
31 | ofxPanel gui;
32 | ofxIntSlider mode;
33 | ofxFloatSlider passes;
34 | ofxButton clearButton;
35 |
36 | ofxGuiGroup gs;
37 | ofxFloatSlider feed, kill, Du, Dv;
38 |
39 | ofxGuiGroup fhn;
40 | ofxFloatSlider a0, a1, epsilon, delta, k1, k2, k3;
41 |
42 | ofxGuiGroup bz;
43 | ofxFloatSlider alpha, beta, gamma;
44 |
45 | ofxGuiGroup worm;
46 | ofxFloatSlider constA, constB;
47 |
48 | ofxPanel colors;
49 | ofxFloatColorSlider color1, color2, color3, color4, color5;
50 | ofxFloatSlider thresh1, thresh2, thresh3, thresh4, thresh5;
51 | };
52 |
--------------------------------------------------------------------------------
/ofxaddons_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matsune/ofxReactionDiffusion/63907476971c55bb2ad5f15716e91e26d2ecb6bb/ofxaddons_thumbnail.png
--------------------------------------------------------------------------------
/src/PingPong.h:
--------------------------------------------------------------------------------
1 | #ifndef PingPong_h
2 | #define PingPong_h
3 |
4 | struct PingPong {
5 | public:
6 | void allocate( int _width, int _height, int _internalformat = GL_RGBA, int _numColorBuffers = 1){
7 | // Allocate
8 | ofFbo::Settings fboSettings;
9 | fboSettings.width = _width;
10 | fboSettings.height = _height;
11 | fboSettings.numColorbuffers = _numColorBuffers;
12 | fboSettings.useDepth = false;
13 | fboSettings.internalformat = _internalformat; // Gotta store the data as floats, they won't be clamped to 0..1
14 | fboSettings.wrapModeHorizontal = GL_CLAMP_TO_EDGE;
15 | fboSettings.wrapModeVertical = GL_CLAMP_TO_EDGE;
16 | fboSettings.minFilter = GL_NEAREST; // No interpolation, that would mess up data reads later!
17 | fboSettings.maxFilter = GL_NEAREST;
18 | for(int i = 0; i < 2; i++){
19 | FBOs[i].allocate(fboSettings);
20 | }
21 |
22 | // Clean
23 | clear();
24 |
25 | // Set everything to 0
26 | flag = 0;
27 | swap();
28 | flag = 0;
29 | }
30 |
31 | void swap(){
32 | src = &(FBOs[(flag)%2]);
33 | dst = &(FBOs[++(flag)%2]);
34 | }
35 |
36 | void clear(){
37 | for(int i = 0; i < 2; i++){
38 | FBOs[i].begin();
39 | ofClear(0,255);
40 | FBOs[i].end();
41 | }
42 | }
43 |
44 | ofFbo& operator[]( int n ){ return FBOs[n];}
45 |
46 | ofFbo *src; // Source -> Ping
47 | ofFbo *dst; // Destination -> Pong
48 | private:
49 | ofFbo FBOs[2]; // Real addresses of ping/pong FBO´s
50 | int flag; // Integer for making a quick swap
51 | };
52 |
53 | #endif
--------------------------------------------------------------------------------
/src/ofxReactionDiffusion.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // ofxReactionDiffusion.cpp
3 | //
4 | // Created by Yuma Matsune on 2016/10/25.
5 | //
6 | //
7 |
8 | #include "ofxReactionDiffusion.h"
9 |
10 | ofxReactionDiffusion::ofxReactionDiffusion() {
11 | mode = RD_MODE_GRAY_SCOTT;
12 |
13 | passes = 1.0;
14 |
15 | feed = 0.037;
16 | kill = 0.06;
17 | Du = 0.21;
18 | Dv = 0.105;
19 |
20 | a0 = 0.459184;
21 | a1 = 0.780612;
22 | epsilon = 0.642857;
23 | delta = 3.0;
24 | k1 = 1.63776;
25 | k2 = 0.336735;
26 | k3 = 2.29592;
27 |
28 | alpha = 1.0;
29 | beta = 1.0;
30 | gamma = 1.0;
31 |
32 | color1.set( 0.0, 0.0, 0.0, 0.0);
33 | color2.set( 0.0, 0.403, 0.6836, 0.2);
34 | color3.set(0.7857, 0.0816, 0.7347, 0.4);
35 | color4.set( 1.0, 0.1632, 0.4948, 0.6);
36 | color5.set( 0.02, 0.78, 0.918, 0.8);
37 |
38 | string grayScott = STRINGIFY(
39 | float kernel[9];
40 | vec2 offset[9];
41 |
42 | uniform float passes;
43 | uniform float feed;
44 | uniform float kill;
45 | uniform float Du;
46 | uniform float Dv;
47 | uniform sampler2DRect tex0;
48 |
49 | void main(){
50 | vec2 st = gl_TexCoord[0].st;
51 |
52 | offset[0] = vec2( 0.0, -1.0);
53 | offset[1] = vec2(-1.0, 0.0);
54 | offset[2] = vec2( 0.0, 0.0);
55 | offset[3] = vec2( 1.0, 0.0);
56 | offset[4] = vec2( 0.0, 1.0);
57 |
58 | offset[5] = vec2(-1.0, -1.0);
59 | offset[6] = vec2( 1.0, -1.0);
60 | offset[7] = vec2(-1.0, 1.0);
61 | offset[8] = vec2( 1.0, 1.0);
62 |
63 | kernel[0] = 1.0;
64 | kernel[1] = 1.0;
65 | kernel[2] = -6.82842712;
66 | kernel[3] = 1.0;
67 | kernel[4] = 1.0;
68 |
69 | kernel[5] = 0.707106781;
70 | kernel[6] = 0.707106781;
71 | kernel[7] = 0.707106781;
72 | kernel[8] = 0.707106781;
73 |
74 | vec2 lap = vec2(0.0, 0.0);
75 | for(int i=0; i<9; i++){
76 | vec2 tmp = texture2DRect(tex0, st + offset[i]).rb;
77 | lap += tmp * kernel[i];
78 | }
79 |
80 | vec2 uv = texture2DRect(tex0, st).rb;
81 | float du = Du*lap.r - uv.r*uv.g*uv.g + feed*(1.0 - uv.r);
82 | float dv = Dv*lap.g + uv.r*uv.g*uv.g - (feed+kill)*uv.g;
83 | vec2 dst = uv + passes*vec2(du, dv);
84 |
85 | gl_FragColor = vec4(dst.r, 0.0, dst.g, 1.0);;
86 | }
87 | );
88 | gsShader.unload();
89 | gsShader.setupShaderFromSource(GL_FRAGMENT_SHADER, grayScott);
90 | gsShader.linkProgram();
91 |
92 | string fitzHughNagumo = STRINGIFY(
93 | float kernel[9];
94 | vec2 offset[9];
95 |
96 | uniform float passes;
97 | uniform float a0;
98 | uniform float a1;
99 | uniform float epsilon;
100 | uniform float delta;
101 | uniform float k1;
102 | uniform float k2;
103 | uniform float k3;
104 | uniform sampler2DRect tex0;
105 |
106 | void main(){
107 | vec2 st = gl_TexCoord[0].st;
108 |
109 | offset[0] = vec2( 0.0, -1.0);
110 | offset[1] = vec2(-1.0, 0.0);
111 | offset[2] = vec2( 0.0, 0.0);
112 | offset[3] = vec2( 1.0, 0.0);
113 | offset[4] = vec2( 0.0, 1.0);
114 |
115 | offset[5] = vec2(-1.0, -1.0);
116 | offset[6] = vec2( 1.0, -1.0);
117 | offset[7] = vec2(-1.0, 1.0);
118 | offset[8] = vec2( 1.0, 1.0);
119 |
120 | kernel[0] = 1.0;
121 | kernel[1] = 1.0;
122 | kernel[2] = -6.82842712;
123 | kernel[3] = 1.0;
124 | kernel[4] = 1.0;
125 |
126 | kernel[5] = 0.707106781;
127 | kernel[6] = 0.707106781;
128 | kernel[7] = 0.707106781;
129 | kernel[8] = 0.707106781;
130 |
131 | vec2 lap = vec2(0.0, 0.0);
132 | for(int i=0; i<9; i++){
133 | vec2 tmp = texture2DRect(tex0, st + offset[i]).rb;
134 | lap += tmp * kernel[i];
135 | }
136 |
137 | float u = texture2DRect(tex0, st).r;
138 | float v = texture2DRect(tex0, st).b;
139 |
140 | float du = (k1 * u) - (k2 * pow(u, 2.0)) - pow(u, 3.0) - v + lap.x;
141 | float dv = epsilon * (k3 * u - a1 * v - a0) + delta * lap.y;
142 | u += du * passes * 0.1;
143 | v += dv * passes * 0.1;
144 | gl_FragColor = vec4(clamp(u, 0.0, 1.0), 0, clamp(v, 0.0, 1.0), 1.0);
145 | }
146 | );
147 | fhnShader.unload();
148 | fhnShader.setupShaderFromSource(GL_FRAGMENT_SHADER, fitzHughNagumo);
149 | fhnShader.linkProgram();
150 |
151 | string belousovZhabotinsky = STRINGIFY(
152 | vec2 offset[9];
153 |
154 | uniform float passes;
155 | uniform float alpha;
156 | uniform float beta;
157 | uniform float gamma;
158 | uniform sampler2DRect tex0;
159 |
160 | void main(){
161 | vec2 st = gl_TexCoord[0].st;
162 |
163 | offset[0] = vec2( 0.0, -1.0);
164 | offset[1] = vec2(-1.0, 0.0);
165 | offset[2] = vec2( 0.0, 0.0);
166 | offset[3] = vec2( 1.0, 0.0);
167 | offset[4] = vec2( 0.0, 1.0);
168 |
169 | offset[5] = vec2(-1.0, -1.0);
170 | offset[6] = vec2( 1.0, -1.0);
171 | offset[7] = vec2(-1.0, 1.0);
172 | offset[8] = vec2( 1.0, 1.0);
173 |
174 | vec3 source = vec3(0);
175 | for(int i=0; i<9; i++){
176 | source += texture2DRect(tex0, st + offset[i]).rgb;
177 | }
178 | source /= 9.0;
179 |
180 | float a = source.r + source.r * ((alpha * (source.g * gamma)) - source.b) * passes;
181 | float b = source.g + source.g * ((beta * source.b) - (alpha * source.r)) * passes;
182 | float c = source.b + source.b * ((gamma * source.r) - (beta * source.g)) * passes;
183 |
184 | source.r = a;
185 | source.g = b;
186 | source.b = c;
187 |
188 | gl_FragColor = vec4(source, 1.0);
189 | }
190 | );
191 | bzShader.unload();
192 | bzShader.setupShaderFromSource(GL_FRAGMENT_SHADER, belousovZhabotinsky);
193 | bzShader.linkProgram();
194 |
195 | string coloringFragment = STRINGIFY(
196 | uniform vec4 color1;
197 | uniform vec4 color2;
198 | uniform vec4 color3;
199 | uniform vec4 color4;
200 | uniform vec4 color5;
201 | uniform sampler2DRect tex0;
202 |
203 | void main(){
204 | vec2 st = gl_TexCoord[0].st;
205 |
206 | float value = texture2DRect(tex0, st).b;
207 | float a;
208 | vec3 col;
209 |
210 | if(value <= color1.a)
211 | col = color1.rgb;
212 |
213 | if(value > color1.a && value <= color2.a) {
214 | a = (value-color1.a)/(color2.a-color1.a);
215 | col = mix(color1.rgb, color2.rgb, a);
216 | }
217 |
218 | if(value > color2.a && value <= color3.a) {
219 | a = (value-color2.a)/(color3.a-color2.a);
220 | col = mix(color2.rgb, color3.rgb, a);
221 | }
222 |
223 | if(value > color3.a && value <= color4.a) {
224 | a = (value-color3.a)/(color4.a-color3.a);
225 | col = mix(color3.rgb, color4.rgb, a);
226 | }
227 |
228 | if(value > color4.a && value <= color5.a) {
229 | a = (value - color4.a)/(color5.a - color4.a);
230 | col = mix(color4.rgb, color5.rgb, a);
231 | }
232 |
233 | if(value > color5.a)
234 | col = color5.rgb;
235 |
236 | gl_FragColor = vec4(col,1.0);
237 | }
238 | );
239 | coloringShader.unload();
240 | coloringShader.setupShaderFromSource(GL_FRAGMENT_SHADER, coloringFragment);
241 | coloringShader.linkProgram();
242 | }
243 |
244 | void ofxReactionDiffusion::allocate(int _width, int _height, float _scale) {
245 | width = _width;
246 | height = _height;
247 | scale = _scale;
248 |
249 | srcPingPong.allocate(_width, _height);
250 | obstaclePingPong.allocate(_width, _height);
251 | renderPingPong.allocate(_width, _height);
252 |
253 | clearAll();
254 | }
255 |
256 |
257 | void ofxReactionDiffusion::update() {
258 | srcPingPong.dst->begin();
259 | srcPingPong.src->draw(0, 0);
260 | obstaclePingPong.src->draw(0, 0);
261 | srcPingPong.dst->end();
262 |
263 | srcPingPong.swap();
264 |
265 |
266 | srcPingPong.dst->begin();
267 | switch (mode) {
268 | case RD_MODE_GRAY_SCOTT:
269 | gsShader.begin();
270 | gsShader.setUniform1f("screenWidth", ofGetWidth());
271 | gsShader.setUniform1f("screenHeight", ofGetHeight());
272 | gsShader.setUniform1f("passes", passes);
273 | gsShader.setUniform1f("feed", feed);
274 | gsShader.setUniform1f("kill", kill);
275 | gsShader.setUniform1f("Du", Du);
276 | gsShader.setUniform1f("Dv", Dv);
277 | srcPingPong.src->draw(0, 0);
278 | gsShader.end();
279 | break;
280 | case RD_MODE_FITZHUGH_NAGUMO:
281 | fhnShader.begin();
282 | fhnShader.setUniform1f("passes", passes);
283 | fhnShader.setUniform1f("a0", a0);
284 | fhnShader.setUniform1f("a1", a1);
285 | fhnShader.setUniform1f("epsilon", epsilon);
286 | fhnShader.setUniform1f("delta", delta);
287 | fhnShader.setUniform1f("k1", k1);
288 | fhnShader.setUniform1f("k2", k2);
289 | fhnShader.setUniform1f("k3", k3);
290 | srcPingPong.src->draw(0, 0);
291 | fhnShader.end();
292 | break;
293 | case RD_MODE_BELOUSOV_ZHABOTINSKY:
294 | bzShader.begin();
295 | bzShader.setUniform1f("passes", passes);
296 | bzShader.setUniform1f("alpha", alpha);
297 | bzShader.setUniform1f("beta", beta);
298 | bzShader.setUniform1f("gamma", gamma);
299 | srcPingPong.src->draw(0, 0);
300 | bzShader.end();
301 | break;
302 | default:
303 | break;
304 | }
305 | srcPingPong.dst->end();
306 | srcPingPong.swap();
307 |
308 | renderPingPong.dst->begin();
309 | coloringShader.begin();
310 | coloringShader.setUniform4f("color1", color1.r, color1.g, color1.b, color1.a);
311 | coloringShader.setUniform4f("color2", color2.r, color2.g, color2.b, color2.a);
312 | coloringShader.setUniform4f("color3", color3.r, color3.g, color3.b, color3.a);
313 | coloringShader.setUniform4f("color4", color4.r, color4.g, color4.b, color4.a);
314 | coloringShader.setUniform4f("color5", color5.r, color5.g, color5.b, color5.a);
315 | srcPingPong.src->draw(0, 0);
316 | coloringShader.end();
317 | renderPingPong.dst->end();
318 |
319 | renderPingPong.swap();
320 | }
321 |
322 | void ofxReactionDiffusion::draw(int _x, int _y, float _width, float _height) {
323 | if (_width < 0) _width = width;
324 | if (_height < 0) _height = height;
325 |
326 | renderPingPong.src->draw(_x, _y, _width/scale, _height/scale);
327 | }
328 |
329 | void ofxReactionDiffusion::addSource(int _x, int _y, float _radius) {
330 | srcPingPong.src->begin();
331 | ofSetColor(100, 100, 120);
332 | ofDrawCircle(_x * scale, _y * scale, _radius * scale);
333 | srcPingPong.src->end();
334 | }
335 |
336 | void ofxReactionDiffusion::addObstacle(int _x, int _y, float _radius) {
337 | obstaclePingPong.src->begin();
338 | ofSetColor(255, 0, 0);
339 | ofDrawCircle(_x * scale, _y * scale, _radius * scale);
340 | obstaclePingPong.src->end();
341 | }
342 |
343 | void ofxReactionDiffusion::clearSources() {
344 | srcPingPong.src->begin();
345 | ofBackground(255, 0, 0);
346 | srcPingPong.src->end();
347 | }
348 |
349 | void ofxReactionDiffusion::clearObstacles() {
350 | obstaclePingPong.src->begin();
351 | ofClear(255, 0, 0);
352 | obstaclePingPong.src->end();
353 | }
354 |
355 | void ofxReactionDiffusion::clearAll() {
356 | clearSources();
357 | clearObstacles();
358 | }
359 |
--------------------------------------------------------------------------------
/src/ofxReactionDiffusion.h:
--------------------------------------------------------------------------------
1 | //
2 | // ofReactionDiffusion.h
3 | //
4 | // Created by Yuma Matsune on 2016/10/25.
5 | //
6 | //
7 | #pragma once
8 |
9 | #include "ofMain.h"
10 | #include "PingPong.h"
11 |
12 | #define STRINGIFY(A) #A
13 |
14 | typedef enum {
15 | RD_MODE_GRAY_SCOTT,
16 | RD_MODE_FITZHUGH_NAGUMO,
17 | RD_MODE_BELOUSOV_ZHABOTINSKY
18 | } ReactionDiffusionMode;
19 |
20 | class ofxReactionDiffusion {
21 |
22 | public:
23 | ofxReactionDiffusion();
24 | void allocate(int _width, int _height, float _scale=1.0);
25 | void update();
26 | void draw(int _x=0, int _y=0, float _width=-1, float _height=-1);
27 |
28 | ofTexture getSourceTexture() {
29 | return srcPingPong.src->getTexture();
30 | }
31 |
32 | ofFbo getSourceFbo() {
33 | return *srcPingPong.src;
34 | }
35 |
36 | ofTexture getObstacleTexture() {
37 | return obstaclePingPong.src->getTexture();
38 | }
39 |
40 | ofFbo getObstacleFbo() {
41 | return *obstaclePingPong.src;
42 | }
43 |
44 | ofTexture getColorTexture() {
45 | return renderPingPong.src->getTexture();
46 | }
47 |
48 | ofFbo getColorFbo() {
49 | return *renderPingPong.src;
50 | }
51 |
52 |
53 | void setMode(ReactionDiffusionMode _mode) { mode = _mode;}
54 |
55 | void addSource(int _x, int _y, float _radius);
56 | void addObstacle(int _x, int _y, float _radius);
57 | void clearSources();
58 | void clearObstacles();
59 | void clearAll();
60 |
61 | void setColor1(ofFloatColor _color) {
62 | color1.r = _color.r;
63 | color1.g = _color.g;
64 | color1.b = _color.b;
65 | }
66 | void setColor2(ofFloatColor _color) {
67 | color2.r = _color.r;
68 | color2.g = _color.g;
69 | color2.b = _color.b;
70 | }
71 | void setColor3(ofFloatColor _color) {
72 | color3.r = _color.r;
73 | color3.g = _color.g;
74 | color3.b = _color.b;
75 | }
76 | void setColor4(ofFloatColor _color) {
77 | color4.r = _color.r;
78 | color4.g = _color.g;
79 | color4.b = _color.b;
80 | }
81 | void setColor5(ofFloatColor _color) {
82 | color5.r = _color.r;
83 | color5.g = _color.g;
84 | color5.b = _color.b;
85 | }
86 |
87 | void setColor1Threshold(float _thresh) { color1.a = _thresh; }
88 | void setColor2Threshold(float _thresh) { color2.a = _thresh; }
89 | void setColor3Threshold(float _thresh) { color3.a = _thresh; }
90 | void setColor4Threshold(float _thresh) { color4.a = _thresh; }
91 | void setColor5Threshold(float _thresh) { color5.a = _thresh; }
92 |
93 | ofFloatColor getColor1() { return color1; }
94 | ofFloatColor getColor2() { return color2; }
95 | ofFloatColor getColor3() { return color3; }
96 | ofFloatColor getColor4() { return color4; }
97 | ofFloatColor getColor5() { return color5; }
98 |
99 | /*
100 | Common Paramters
101 | */
102 | void setPasses(float _passes) { passes = _passes; }
103 |
104 | float getPasses() { return passes; }
105 |
106 | /*
107 | Gray-Scott
108 | */
109 | void setFeed(float _feed) { feed = _feed; }
110 | void setKill(float _kill) { kill = _kill; }
111 | void setDu(float _Du) { Du = _Du; }
112 | void setDv(float _Dv) { Dv = _Dv; }
113 |
114 | float getFeed() { return feed; }
115 | float getKill() { return kill; }
116 | float getDu() { return Du; }
117 | float getDv() { return Dv; }
118 |
119 | void setGrayScottParams(float _feed, float _kill, float _Du, float _Dv) {
120 | setFeed(_feed);
121 | setKill(_kill);
122 | setDu(_Du);
123 | setDv(_Dv);
124 | }
125 |
126 | /*
127 | FitzHugh-Nagumo
128 | */
129 | void setA0(float _a0) { a0 = _a0; }
130 | void setA1(float _a1) { a1 = _a1; }
131 | void setEpsilon(float _epsilon) { epsilon = _epsilon; }
132 | void setDelta(float _delta) { delta = _delta; }
133 | void setK1(float _k1) { k1 = _k1; }
134 | void setK2(float _k2) { k2 = _k2; }
135 | void setK3(float _k3) { k3 = _k3; }
136 |
137 | float getA0() { return a0; }
138 | float getA1() { return a1; }
139 | float getEpsilon() { return epsilon; }
140 | float getDelta() { return delta; }
141 | float getK1() { return k1; }
142 | float getK2() { return k2; }
143 | float getK3() { return k3; }
144 |
145 | void setFhnParams(float _a0, float _a1, float _epsilon, float _delta, float _k1, float _k2, float _k3) {
146 | setA0(_a0);
147 | setA1(_a1);
148 | setEpsilon(_epsilon);
149 | setDelta(_delta);
150 | setK1(_k1);
151 | setK2(_k2);
152 | setK3(_k3);
153 | }
154 |
155 | /*
156 | Belousov-Zhabotinsky
157 | */
158 | void setAlpha(float _alpha) { alpha = _alpha; }
159 | void setBeta(float _beta) { alpha = _beta; }
160 | void setGamma(float _gamma) { gamma = _gamma; }
161 |
162 | float getAlpha() { return alpha; }
163 | float getBeta() { return beta; }
164 | float getGamma() { return gamma; }
165 |
166 | void setBzParams(float _alpha, float _beta, float _gamma) {
167 | setAlpha(_alpha);
168 | setBeta(_beta);
169 | setGamma(_gamma);
170 | }
171 | private:
172 | int width, height;
173 | float scale;
174 | ReactionDiffusionMode mode;
175 |
176 | PingPong srcPingPong;
177 | PingPong obstaclePingPong;
178 | PingPong renderPingPong;
179 |
180 | /// Gray-Scott
181 | ofShader gsShader;
182 | /// FitzHugh-Nagumo
183 | ofShader fhnShader;
184 | /// Belousov-Zhabotinsky
185 | ofShader bzShader;
186 |
187 | ofShader coloringShader;
188 |
189 | ofFloatColor color1;
190 | ofFloatColor color2;
191 | ofFloatColor color3;
192 | ofFloatColor color4;
193 | ofFloatColor color5;
194 |
195 | /*
196 | Common Paramters
197 | */
198 | float passes;
199 |
200 | /*
201 | Gray-Scott
202 | */
203 | float feed;
204 | float kill;
205 | float Du;
206 | float Dv;
207 |
208 | /*
209 | FitzHugh-Nagumo
210 | */
211 | float a0;
212 | float a1;
213 | float epsilon;
214 | float delta;
215 | float k1;
216 | float k2;
217 | float k3;
218 |
219 | /*
220 | Belousov-Zhabotinsky
221 | */
222 | float alpha;
223 | float beta;
224 | float gamma;
225 | };
226 |
--------------------------------------------------------------------------------
/thumbs/bz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matsune/ofxReactionDiffusion/63907476971c55bb2ad5f15716e91e26d2ecb6bb/thumbs/bz.gif
--------------------------------------------------------------------------------
/thumbs/fhn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matsune/ofxReactionDiffusion/63907476971c55bb2ad5f15716e91e26d2ecb6bb/thumbs/fhn.gif
--------------------------------------------------------------------------------
/thumbs/gs.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matsune/ofxReactionDiffusion/63907476971c55bb2ad5f15716e91e26d2ecb6bb/thumbs/gs.gif
--------------------------------------------------------------------------------
/thumbs/header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matsune/ofxReactionDiffusion/63907476971c55bb2ad5f15716e91e26d2ecb6bb/thumbs/header.png
--------------------------------------------------------------------------------
/thumbs/mesh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matsune/ofxReactionDiffusion/63907476971c55bb2ad5f15716e91e26d2ecb6bb/thumbs/mesh.gif
--------------------------------------------------------------------------------