Skip to content
This repository has been archived by the owner on Nov 23, 2020. It is now read-only.
/ ws-ldn-6 Public archive

Workshop repo: Building Clojure / ClojureScript desktop apps with OpenGL, OpenCL & Electron

Notifications You must be signed in to change notification settings

thi-ng/ws-ldn-6

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

WS-LDN-6

Clojure/Clojurescript desktop apps w/ OpenGL + OpenCL + WebGL + Electron

Repository

git clone [email protected]:postspectacular/ws-ldn-6.git
git clone https://[email protected]/postspectacular/ws-ldn-6.git

Will be moved to GitHub later…

How to run examples

cd ws-ldn-6/day1

Topics

Overview of thi.ng library collection

Intro to libraries used for this workshop

  • thi.ng/geom
  • thi.ng/shadergraph
  • thi.ng/simplecl
  • thi.ng/color

2D/3D geometry concepts, types

  • vector algebra
  • matrix transformations
  • polygons
  • meshes ([un]directed graphs)
  • vertices & vertex attributes

Creating & exporting 2D/3D geometry, transformations & conversions

Introduction to OpenGL/WebGL/JOGL (concepts, techniques, pipelines)

Using thi.ng JOGL wrappers to simplify app development

Cameras & coordinate systems (model, view, projection, normals)

Intro to shaders & GLSL shading language, building simple shaders

Common light model calculations (Lambert, Phong, Cook-Torrance etc.)

Composing, embedding & minifying shaders with thi.ng/shadergraph

Multipass processing using GLSL & Framebuffer objects

Working with native data buffers (Clojure & Clojurescript)

Attributed meshes & working with textures

Building UI components with shaders

OpenCL introduction, concepts

Differences to OpenGL

Writing basic OpenCL kernels, data processing on the GPU

Working with Javascript Typed Arrays and data views

Unified OpenGL/WebGL API in thi.ng/geom

Using WebGL with Reagent (component definitions)

Interactions & 3D model/scene updates

Introduction to Electron & Clojurescript helpers

Building Clojurescript for desktop apps

Walkthrough example app