From 156f1030ebec3f8cbc541d768af0b4636904b207 Mon Sep 17 00:00:00 2001 From: Marius Horga Date: Fri, 26 May 2017 17:49:43 -0500 Subject: [PATCH] added memory --- README.md | 1 + .../UserInterfaceState.xcuserstate | Bin 10460 -> 0 bytes .../Contents.swift | 0 .../Resources/memory.metal | 0 .../Resources/teapot.obj | 0 .../contents.xcplayground | 0 .../contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin 0 -> 10653 bytes .../UserInterfaceState.xcuserstate | Bin .../timeline.xctimeline | 0 .../memory_2.playground}/Contents.swift | 0 .../memory_2.playground}/contents.xcplayground | 0 .../contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin 0 -> 6792 bytes .../UserInterfaceState.xcuserstate | Bin 15 files changed, 1 insertion(+) delete mode 100644 memory/memory.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate rename memory/{memory.playground => memory_1.playground}/Contents.swift (100%) rename memory/{memory.playground => memory_1.playground}/Resources/memory.metal (100%) rename memory/{memory.playground => memory_1.playground}/Resources/teapot.obj (100%) rename memory/{memory.playground => memory_1.playground}/contents.xcplayground (100%) rename memory/{memory.playground => memory_1.playground}/playground.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 memory/memory_1.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate rename memory/{memory.playground => memory_1.playground}/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate (100%) rename memory/{memory.playground => memory_1.playground}/timeline.xctimeline (100%) rename {memory_part_2.playground => memory/memory_2.playground}/Contents.swift (100%) rename {memory_part_2.playground => memory/memory_2.playground}/contents.xcplayground (100%) rename {memory_part_2.playground => memory/memory_2.playground}/playground.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 memory/memory_2.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate rename {memory_part_2.playground => memory/memory_2.playground}/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate (100%) diff --git a/README.md b/README.md index 8fa17e5..e6ea343 100644 --- a/README.md +++ b/README.md @@ -25,3 +25,4 @@ Repository to accompany the following blog posts: - [Shadows in Metal part 2](http://metalkit.org/2017/02/28/shadows-in-metal-part-2.html) - [Ambient Occlusion in Metal](http://metalkit.org/2017/03/22/ambient-occlusion-in-metal.html) - [Working with memory in Metal](http://metalkit.org/2017/04/30/working-with-memory-in-metal.html) +- [Working with memory in Metal part 2](http://metalkit.org/2017/05/26/working-with-memory-in-metal-part-2.html) diff --git a/memory/memory.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate b/memory/memory.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 3683b4aeea8edba9463b766f6874c7fdc3355b71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10460 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 diff --git a/memory/memory.playground/Contents.swift b/memory/memory_1.playground/Contents.swift similarity index 100% rename from memory/memory.playground/Contents.swift rename to memory/memory_1.playground/Contents.swift diff --git a/memory/memory.playground/Resources/memory.metal b/memory/memory_1.playground/Resources/memory.metal similarity index 100% rename from memory/memory.playground/Resources/memory.metal rename to memory/memory_1.playground/Resources/memory.metal diff --git a/memory/memory.playground/Resources/teapot.obj b/memory/memory_1.playground/Resources/teapot.obj similarity index 100% rename from memory/memory.playground/Resources/teapot.obj rename to memory/memory_1.playground/Resources/teapot.obj diff --git a/memory/memory.playground/contents.xcplayground b/memory/memory_1.playground/contents.xcplayground similarity index 100% rename from memory/memory.playground/contents.xcplayground rename to memory/memory_1.playground/contents.xcplayground diff --git a/memory/memory.playground/playground.xcworkspace/contents.xcworkspacedata b/memory/memory_1.playground/playground.xcworkspace/contents.xcworkspacedata similarity index 100% rename from memory/memory.playground/playground.xcworkspace/contents.xcworkspacedata rename to memory/memory_1.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/memory/memory_1.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate b/memory/memory_1.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..b51176330c15e62887e96cf6c45be28f089f5271 GIT binary patch literal 10653 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 HBjbMnQ>a=^ literal 0 HcmV?d00001 diff --git a/memory/memory.playground/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate b/memory/memory_1.playground/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate similarity index 100% rename from memory/memory.playground/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate rename to memory/memory_1.playground/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/memory/memory.playground/timeline.xctimeline b/memory/memory_1.playground/timeline.xctimeline similarity index 100% rename from memory/memory.playground/timeline.xctimeline rename to memory/memory_1.playground/timeline.xctimeline diff --git a/memory_part_2.playground/Contents.swift b/memory/memory_2.playground/Contents.swift similarity index 100% rename from memory_part_2.playground/Contents.swift rename to memory/memory_2.playground/Contents.swift diff --git a/memory_part_2.playground/contents.xcplayground b/memory/memory_2.playground/contents.xcplayground similarity index 100% rename from memory_part_2.playground/contents.xcplayground rename to memory/memory_2.playground/contents.xcplayground diff --git a/memory_part_2.playground/playground.xcworkspace/contents.xcworkspacedata b/memory/memory_2.playground/playground.xcworkspace/contents.xcworkspacedata similarity index 100% rename from memory_part_2.playground/playground.xcworkspace/contents.xcworkspacedata rename to memory/memory_2.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/memory/memory_2.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate b/memory/memory_2.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a2dbfc0cd419b1e9a321e3e8f5f6cd7a87fdad87 GIT binary patch literal 6792 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 J8F_cm{{w4PI_&@e literal 0 HcmV?d00001 diff --git a/memory_part_2.playground/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate b/memory/memory_2.playground/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate similarity index 100% rename from memory_part_2.playground/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate rename to memory/memory_2.playground/playground.xcworkspace/xcuserdata/mhorga.xcuserdatad/UserInterfaceState.xcuserstate