Skip to content

Latest commit

 

History

History
executable file
·
74 lines (52 loc) · 1.39 KB

File metadata and controls

executable file
·
74 lines (52 loc) · 1.39 KB

Design:

Ideally, the program should run with an argument to a path to a file with data:

https://kylewbanks.com/blog/tutorial-opengl-with-golang-part-1-hello-opengl

Uses json or xml files to setup then display opengl

Has all the shader toy stuff in the background

Json has

  • list of filepaths that will act as the different "channels"
  • resolution data
  • full shadertoy shader support (no sound stuff)

Then in the terminal, you just run the app then the path to the json, and it will automatically parse then open a window for it which you can then full screen

Later on, also support recording

Stored something like

Resolution: (1920, 1080)
Buffers: [
	// This would be Buffer0
	{
		Code: "(GLSL CODE HERE)",
		Channels: [
			// ORDERED BY NUMBER OF channel
			// Potential types, Buffers (could be self or others), videos, photos
			// Eventually, music???
			"CHANNEL_TYPE",
			"CHANNEL_TYPE",
		]
	}
	// This would be Buffer1
	{
		Code: "(GLSL CODE HERE)",
		Channels: [
			"CHANNEL_TYPE",
		]
	}
]

Backend design -> parser -> creates structs from stuff -> runner -> draws the shader -> plays music

3 parts, sound player, drawer, parser, CLI

Parser reads files

  • sets up channels
  • sets up programs
  • buffers, etc.

Somewhere big loop of

Create buffers, compile program, etc. (MAIN LOOP) for each channel in currentShader'sChannels run shader Draw final shader to screen