diff options
Diffstat (limited to 'chickadee/graphics/light.scm')
-rw-r--r-- | chickadee/graphics/light.scm | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/chickadee/graphics/light.scm b/chickadee/graphics/light.scm index d217f56..25fd17e 100644 --- a/chickadee/graphics/light.scm +++ b/chickadee/graphics/light.scm @@ -40,10 +40,12 @@ light-position light-direction light-color + light-intensity light-cut-off set-light-position! set-light-direction! set-light-color! + set-light-intensity! set-light-cut-off!)) ;; Maximum number of lights supported by our shaders. @@ -57,7 +59,8 @@ (float-vec3 position light-position set-light-position!) (float-vec3 direction light-direction set-light-direction!) (float-vec4 color light-color set-light-color!) - (float cut-off light-cut-off set-light-cut-off!)) + (float intensity light-intensity set-light-intensity!) + (float cut-off light-cut-off %set-light-cut-off!)) (define %disabled-light (make-light #:enabled #f)) @@ -77,27 +80,34 @@ (define (spot-light? light) (eq? (light-type light) 'spot)) +(define (set-light-cut-off! light cut-off) + (%set-light-cut-off! light (cos cut-off))) + (define* (make-point-light #:key (position (vec3 0.0 0.0 0.0)) - (color black)) + (color black) (intensity 1.0)) (make-light #:enabled #t #:type 0 #:position position - #:color color)) + #:color color + #:intensity intensity)) (define* (make-directional-light #:key (direction (vec3 0.0 -1.0 0.0)) - (color black)) + (color black) (intensity 1.0)) (make-light #:enabled #t #:type 1 #:direction direction - #:color color)) + #:color color + #:intensity intensity)) (define* (make-spot-light #:key (position (vec3 0.0 0.0 0.0)) (direction (vec3 0.0 0.0 -1.0)) (color black) - (cut-off (/ pi 4.0))) + (cut-off (/ pi 4.0)) + (intensity 1.0)) (make-light #:enabled #t #:type 2 #:position position #:direction direction #:color color - #:cut-off (cos cut-off))) + #:cut-off (cos cut-off) + #:intensity intensity)) |