(defpackage #:workbench (:use #:cl+trial) (:shadow #:launch) (:local-nicknames) (:export #:workbench #:launch)) (in-package #:workbench) (defclass workbench (main) () (:default-initargs :clear-color (vec 0.25 0.3 0.35 0))) (defun launch (&rest args) (apply #'trial:launch 'workbench args)) (define-pool workbench) (define-shader-pass pixel-renderer (post-effect-pass) ((color :port-type output))) (define-class-shader (pixel-renderer :fragment-shader) "out vec4 color; float rand(vec2 co){ float a = 12.9898; float b = 78.233; float c = 43758.5453; float dt= dot(co.xy ,vec2(a,b)); float sn= mod(dt,3.14); return fract(sin(sn) * c); } void main(){ color = vec4(vec3(rand(gl_FragCoord.xy)), 1); }") (defmethod setup-scene ((workbench workbench) scene) (enter (make-instance 'pixel-renderer) scene))