ios-spritekit-shader-sandbox - 👾 Collection of custom effects for SpriteKit implemented using GLSL/Metal shaders

  •        19

Last Update: 21/September/2018. An iOS project demonstrating how to use GLSL and Metal Shaders with SpriteKit framework 👾. The purpose of the app is to serve as a sandbox that allows to quicly prototype and experiment with fragment shaders. Currently there are 12 custom fragment shaders. More shaders will be added on a regular basis.



Related Projects

glslCanvas - Simple tool to load GLSL shaders on HTML Canvas using WebGL

  •    Javascript

GlslCanvas is JavaScript Library that helps you easily load GLSL Fragment and Vertex Shaders into an HTML canvas. I have used this in my Book of Shaders and glslEditor. That's all! glslCanvas will automatically load a WebGL context in that <canvas> element, compile the shader and animate it for you.

glsl-optimizer - GLSL optimizer based on Mesa's GLSL compiler

  •    C++

A C++ library that takes GLSL shaders, does some GPU-independent optimizations on them and outputs GLSL or Metal source back. Optimizations are function inlining, dead code removal, copy propagation, constant folding, constant propagation, arithmetic optimizations and so on. Apparently quite a few mobile platforms are pretty bad at optimizing shaders; and unfortunately they also lack offline shader compilers. So using a GLSL optimizer offline before can make the shader run much faster on a platform like that. See performance numbers in this blog post.


  •    C++

[2017/11/12] - Added simple tessellation shader sample. Fixed misc issues with pipeline setup for tessellation. [2017/11/10] - Added ChessSet demo. Added geometry shader sample. Fixes to depth stencil handling. [2017/11/10] - Added TexturedCube sample. Updated depth attachment handling on swapchain render pass. Switched out lc_image for stb_image. Added DXC shader build script. [2017/05/27] - Fixed some annoying buffer state transitions. Added build script for shaders. Updated shader naming convention to be more exact. Added OpaqueArgs and PassingArrays for investigation. [2017/05/20] - Updated Append/Consume sample for Vulkan. Requires latest glslang. ConstantBuffer also works for both platforms. [2017/05/13] - Added Linux support. Moved to project files to cmake. Moved glsl shaders to glsl sub directory - forcing HLSL for now. [2017/04/30] - Clarified shader usage in some sample programs to point out which source they're coming from. [2017/04/27] - Added ConstantBuffer sample (D3D12 only for now). Updated Vulkan samples to use negative viewport height. [2017/04/25] - Updated SimpleCompute and StructuredBuffer to work on Vulkan. [2017/04/24] - Added compute samples (D3D12 only for now). One for simple compute and another for structured buffers.

Voodoo Shader Framework


Voodoo Shader is a comprehensive graphics framework for powering shaders in multiple programs, during development or after release. Voodoo uses plugins and a shared core to support many games and other applications and is compatible with Direct3D and OpenGL.

NShader - HLSL - GLSL - CG - Shader Syntax Highlighter AddIn for Visual Studio


NShader is an extension to Visual Studio 2008/2010/2012 that provides syntax highlighting for various shader languages including HLSL - GLSL - CG.

Glide - Game engine for making 2d games on iOS, macOS and tvOS, with practical examples and tutorials

  •    Swift

glide is a SpriteKit and GameplayKit based engine for building 2d games easily, with a focus on side scrollers. glide is developed with Swift and works on iOS, macOS and tvOS. glide is developed with Entity-Component-System architecture. In short, this makes it easy to manage the code of your game, which might quickly get messy as you add more stuff. In addition to that, loads of building components common to 2d platformers that will get you quickly started is also included in the engine.

Magnetic - SpriteKit Floating Bubble Picker (inspired by Apple Music)

  •    Swift

Magnetic is a customizable bubble picker like the Apple Music genre selection. A Magnetic object is an SKScene.

glslViewer - Live GLSL coding render for MacOS and Linux

  •    C++

Live-coding console tool that renders GLSL Shaders. Every file you use (frag/vert shader, images and geometries) are watched for modification, so they can be updated on the fly. This was tested with Ubuntu 16.04.

glslEditor - Simple WebGL Fragment Shader Editor

  •    Javascript

Friendly GLSL Shader editor based on Codemirror compatible with glslViewer (C++/OpenGL ES) and glslCanvas (JS/WebGL). Was originaly develop to work as a embebed editor for The Book of Shaders. But now have grown as a stand alone Web app. Thanks to their compatibility with other apps of this ecosystems like glslViewer that runs in the RaspberryPi directly from console, GlslEditor interact with other projects like allowing the user to export the shaders to frames with only one button.

ParticlesLoadingView - A customizable SpriteKit particles animation on the border of a view.

  •    Swift

With ParticlesLoadingView you can create your own amazing SpriteKit particles animations with the Xcode's built-in Particle Emitter Editor that looks like the following picture. Go ahead and create your own particles animation by doing File ➡️ New File ➡️ iOS Resource ➡️ SpriteKit Particle File. To see it in action, run the example project, clone the repo, and run pod install from the Example directory first. The example project shows how to set up ParticlesLoadingView in a few different ways.

shader-school - :mortar_board: A workshopper for GLSL shaders and graphics programming

  •    Javascript

An introduction to GLSL shaders and graphics programming that runs in your web browser. The script will ask you if you want to create an answer directory, press y to accept. This will populate your current directory with shader files for you to edit for each lesson – hopefully, it should also automatically open your web browser but if it doesn't you can find the workshop menu on http://localhost:12492/.

glslify - :sparkles: A node.js-style module system for GLSL!

  •    Javascript

It forms one of the core components of the ecosystem, allowing you to install GLSL modules from npm and use them in your shaders. This makes it trivial to piece together different effects and techniques from the community, including but certainly not limited to fog, noise, film grain, raymarching helpers, easing functions and lighting models. A full list can be found on the packages list under the "Shader Components" category.

Efficient Shader Compiler

  •    C++

An efficient shader compiler, a simple and practical solution for managing shader files in 3d engine projects. Editing fx files is just as easy as editing c files with its help. It provides a lot more than fxc.exe. (key words: HLSL,GLSL,DirectX,CG)

XBImageFilters - OpenGL ES 2-based image and real-time camera filters for iOS

  •    Objective-C

XBImageFilters allows you to obtain filtered versions of any image or from the camera in realtime. It uses OpenGL ES 2 to filter the images through fragment shaders you write yourself so you can filter your images in whatever way you want and it is super fast. In this screenshot of the sample we have on the top half of the screen a regular UIImageView with contentMode set to UIViewContentModeTop, and on the bottom half a XBFilteredImageView with the same image with contentMode set to UIViewContentModeBottom and a filter [a GLSL fragment shader] that outputs the luminance of the pixel color.

TouchBreakout - Play Breakout game on your Touch Bar, using SpriteKit. 用 Touch Bar 在 Mac 上玩打砖块游戏

  •    Swift

Play Breakout Game on your Touch Bar, using SpriteKit. 😢The Apple Review teams said the original name TouchBreakout leverages the name 'Breakout', so when launching I have to change the name to TouchBrickout.

RainyRefreshControl - Simple refresh control for iOS based on SpriteKit and Core Graphics

  •    Swift

Simple refresh control for iOS based on SpriteKit and Core Graphics. Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

SprityBird - A small clone of Flappy Bird for iOS using SpriteKit framework

  •    Objective-C

This project is a small clone of Flappy Bird for iOS using SpriteKit framework. It can be used as a base for many types of scrolling games with some imagination.

gamma - glsl shaders made simple

  •    Clojure

Gamma is a substrate for graphics software, such as games and data visualization tools. It presents a simple, composable language for representing GLSL shaders. Technically, Gamma is an EDSL that hosts GLSL within Clojurescript. It is inspired by Carlos Scheidegger's Lux and Conal Elliot's Vertigo and Pan. Gamma targets the WebGL subset of the OpenGL ES 1.0 Shading Language. Gamma can be used a la carte to compile shader source, without adopting Clojure/Clojurescript for your runtime application.

ShaderSketches - KodeLife shader sketches I wrote while commuting

  •    GLSL

This is a repository that stores GLSL shader sketches I created while commuting every day. You can see GIFs of these sketches from my Tumblr. I'm using KodeLife shader editor and GPD Win handheld PC for sketching. In my opinion, this is the best combination of portable development. I created all these sketches while standing in a train.