Add support for custom user shaders.

By default loaded from `$XDG_CONFIG_DIR/boomer/shader.{vs,fs}` with fallback to builtin shaders.
pull/45/head
SolitudeSF 5 years ago
parent 77c3372a77
commit ff660050ff
No known key found for this signature in database
GPG Key ID: 789B06817C385387

@ -20,8 +20,8 @@ proc readShader(file: string): Shader =
const
isDebug = not (defined(danger) or defined(release))
vertexShader = readShader "boomer.vs"
fragmentShader = readShader "boomer.fs"
defaultVertexShader = readShader "boomer.vs"
defaultFragmentShader = readShader "boomer.fs"
proc newShader(shader: Shader, kind: GLenum): GLuint =
result = glCreateShader(kind)
@ -78,19 +78,39 @@ proc draw(screenshot: Image, camera: var Camera, shader, vao, texture: GLuint) =
proc main() =
var config = defaultConfig
let configFile = block:
if paramCount() > 0:
paramStr(1)
else:
getConfigDir() / "boomer" / "config"
let
boomerDir = getConfigDir() / "boomer"
configFile = block:
if paramCount() > 0:
paramStr(1)
else:
boomerDir / "config"
if existsFile configFile:
config = loadConfig(configFile)
else:
stderr.writeLine configFile & " doesn't exist. Using default values. "
if config.vertexShader.len == 0:
config.vertexShader = boomerDir / "shader.vs"
if config.fragmentShader.len == 0:
config.fragmentShader = boomerDir / "shader.fs"
echo "Using config: ", config
var vertexShader = block:
if config.vertexShader != "default" and existsFile config.vertexShader:
readShader config.vertexShader
else:
defaultVertexShader
var fragmentShader = block:
if config.fragmentShader != "default" and existsFile config.fragmentShader:
readShader config.fragmentShader
else:
defaultFragmentShader
# Fetching pixel data from X
var display = XOpenDisplay(nil)

@ -7,6 +7,8 @@ type Config* = object
scaleFriction*: float
scalePanning*: float
fps*: int
vertexShader*: string
fragmentShader*: string
const defaultConfig* = Config(
scrollSpeed: 1.0,

Loading…
Cancel
Save