From 283e4e2b5c8faa9b7b4aa79d20a24658fa0fdec1 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Fri, 20 Oct 2017 09:16:12 +0100 Subject: [PATCH] implement multithreaded rendering with context switch, gl state save/restore, add progress bar ui node, implement stencil texture for brush, implement multithreaded canvas load/save/export pano. Missing multithread in windows. --- .gitignore | 2 + .../AppIcon.appiconset/Contents.json | 4 +- .../AppIcon.appiconset/iTunesArtwork.png | Bin 0 -> 18818 bytes .../AppIcon.appiconset/iTunesArtwork@2x.png | Bin 0 -> 40931 bytes .../AppIcon.appiconset/icon1024.png | Bin 41351 -> 0 bytes .../AppIcon.appiconset/icon512.png | Bin 41351 -> 0 bytes PanoPainter-OSX/main.cpp | 40 ++-- PanoPainter-OSX/main.h | 17 ++ .../AppIcon.appiconset/Contents.json | 4 +- .../AppIcon.appiconset/Icon-83.5@2x.png | Bin 0 -> 15539 bytes .../AppIcon.appiconset/iTunesArtwork@2x.png | Bin 0 -> 40931 bytes .../AppIcon.appiconset/icon1024.png | Bin 272477 -> 0 bytes .../AppIcon.appiconset/icon512.png | Bin 29373 -> 0 bytes PanoPainter/GameViewController.h | 7 +- PanoPainter/GameViewController.m | 42 +++++ android/CMakeLists.txt | 2 + android/build.gradle | 2 +- android/src/main/AndroidManifest.xml | 3 +- android/src/main/cpp/main.cpp | 64 ++++--- android/src/main/cpp/main.h | 34 ++++ .../main/res/drawable-hdpi/ic_launcher.png | Bin 22854 -> 3640 bytes .../main/res/drawable-ldpi/ic_launcher.png | Bin 18529 -> 1510 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 19985 -> 2022 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 25472 -> 4505 bytes data/layout.xml | 20 +- data/paper.jpg | Bin 0 -> 238735 bytes engine.xcodeproj/project.pbxproj | 12 ++ engine/app.cpp | 54 ++++++ engine/app.h | 17 ++ engine/app_layout.cpp | 5 +- engine/app_shaders.cpp | 25 ++- engine/canvas.cpp | 177 +++++++++++++++++- engine/canvas.h | 8 +- engine/canvas_modes.cpp | 30 +++ engine/canvas_modes.h | 2 + engine/node_canvas.cpp | 8 + engine/node_canvas.h | 1 + engine/node_panel_brush.cpp | 1 + engine/node_progress_bar.cpp | 24 +++ engine/node_progress_bar.h | 16 ++ engine/shader.h | 3 + engine/util.h | 51 +++++ 42 files changed, 610 insertions(+), 65 deletions(-) create mode 100644 PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png create mode 100644 PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png delete mode 100644 PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/icon1024.png delete mode 100644 PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/icon512.png create mode 100644 PanoPainter-OSX/main.h create mode 100644 PanoPainter/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png create mode 100644 PanoPainter/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png delete mode 100644 PanoPainter/Assets.xcassets/AppIcon.appiconset/icon1024.png delete mode 100644 PanoPainter/Assets.xcassets/AppIcon.appiconset/icon512.png create mode 100755 android/src/main/cpp/main.h create mode 100644 data/paper.jpg create mode 100644 engine/node_progress_bar.cpp create mode 100644 engine/node_progress_bar.h diff --git a/.gitignore b/.gitignore index 69d9247..79a9a7c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ android/src/main/assets/ android/.idea android/android.iml android/local.properties +data/brushes +data/thumbs diff --git a/PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/Contents.json b/PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/Contents.json index 689c82d..14fbabd 100644 --- a/PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -43,13 +43,13 @@ { "size" : "512x512", "idiom" : "mac", - "filename" : "icon512.png", + "filename" : "iTunesArtwork.png", "scale" : "1x" }, { "size" : "512x512", "idiom" : "mac", - "filename" : "icon1024.png", + "filename" : "iTunesArtwork@2x.png", "scale" : "2x" } ], diff --git a/PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png b/PanoPainter-OSX/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png new file mode 100644 index 0000000000000000000000000000000000000000..12c9ba3c7ee5884fc1c0c45d21165b3c507b1d06 GIT binary patch literal 18818 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