(defmap kinetic-energy
(let [m %1, v %2]
(float3 (* 0.5 m (dot v v)))))
#extension GL_ARB_texture_rectangle : enable
varying vec2 __coord;
uniform vec2 __dim;
void main()
=> (pprint fragment-shader) | |
(let [marble | |
(-> pos .x (* 2.0) (+ noise) sin abs) | |
marble-color | |
(float4 0.8 0.7 0.7 1.0) | |
vein-color | |
(float4 0.2 0.15 0.1 1.0) | |
mixed-color | |
(mix vein-color marble-color (pow marble 0.5))] | |
(set! :frag-color (* intensity mixed-color)))) |
(use 'penumbra.compute 'penumbra.app) | |
(with-gl | |
(defmap generate | |
(let [s (sin :index)] | |
(normalize | |
(float3 s (* 3.0 (cos :index)) (/ (* s s) 2.0))))) | |
(defreduce find-max | |
(max %1 %2)) | |
(dotimes [_ 100] |
(use 'penumbra.opengl) | |
(require '(penumbra [app :as app])) | |
(def max-iterations 100) | |
(def num-paths 50) | |
(defn ikeda [x y u] | |
(iterate | |
(fn [[x_n y_n]] | |
(let [t_n (- 0.4 (/ 6 (+ 1 (* x_n x_n) (* y_n y_n))))] |
(defmap initialize-fractal | |
(float3 (mix upper-left lower-right (/ :coord :dim)) 0)) |
(defmap iterate-fractal | |
(let [val % | |
z (.xy val) | |
c (mix upper-left lower-right (/ :coord :dim)) | |
iterations (.z val)] | |
(? (< 4.0 (dot z z)) | |
val | |
(float3 | |
(+ c | |
(float2 |
(defmap color-fractal | |
(let [val % | |
z (.xy val) | |
n (.z val) | |
escape (/ n (float max-iterations))] | |
(? (< 4.0 (dot z z)) | |
(color3 escape escape (mix 0.2 1.0 escape)) | |
(color3 0.0 0.0 0.0)))) |
(ns draw-order (:use [penumbra.opengl] [penumbra.window])) | |
(defn- init [state] | |
(enable :depth-test) | |
(ortho-view 0 0 640 480 -1 1) | |
(scale 1 1 -1) | |
state) | |
(defn draw-square [x y w h] | |
(draw-quads |
;; Draw 1000 moving rects on the screen. | |
;; With penumbra, I get about 50 fps on a dual-core machine with an nVidia 8800. | |
;; On a single-core machine with an ATI Radeon X300, I get about 2 fps. | |
(ns examples.squares | |
(:use [clojure.contrib.def :only (defvar-)] | |
[clojure.contrib.seq-utils :only (flatten)] | |
[penumbra opengl window])) | |
(defstruct rect :offset :size :depth :veloc :color) |
(ns example.wiki.triangle1 | |
(:use [penumbra.opengl]) | |
(:require [penumbra.app :as app])) | |
(defn reshape [[x y width height] state] | |
(frustum-view 60.0 (/ (double width) height) 1.0 100.0) | |
(load-identity) | |
state) | |
(defn display [[delta time] state] |