]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://factorcode.org/git/factor
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 11 Apr 2010 20:07:07 +0000 (13:07 -0700)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 11 Apr 2010 20:07:07 +0000 (13:07 -0700)
extra/fluids/fluids.factor
extra/gpu/demos/bunny/bunny.factor
extra/gpu/demos/raytrace/raytrace.factor
extra/libusb/libusb.factor
extra/macho/macho.factor

index 1fff38b0793dcc27fc394b430036f620bc6de04d..f383534658f99c45dc3aa90bc1a0c35565db6816 100644 (file)
@@ -11,54 +11,34 @@ FROM: alien.c-types => float ;
 SPECIALIZED-ARRAY: float
 IN: fluids
 
-STRUCT: float2_t
-    { x float }
-    { y float } ;
-
-: f2+ ( lhs rhs -- res )
-    [ [ x>> ] bi@ + ]
-    [ [ y>> ] bi@ + ]
-    2bi float2_t <struct-boa> ; inline
-
-: f2- ( lhs rhs -- res )
-    [ [ x>> ] bi@ - ]
-    [ [ y>> ] bi@ - ]
-    2bi float2_t <struct-boa> ; inline
-
-: f2*n ( lhs rhs -- res ) 
-    [ [ x>> ] dip * ]
-    [ [ y>> ] dip * ]
-    2bi float2_t <struct-boa> ; inline
-
 STRUCT: particle_t
-    { p  float2_t }
-    { p' float2_t }
-    { m  float    } ;
+    { p float[2] }
+    { v float[2] }
+    { m float    } ;
 SPECIALIZED-ARRAY: particle_t
 
-CONSTANT: gravity S{ float2_t f 0.0 -0.1 }
+CONSTANT: gravity { 0.0 -0.1 }
 
-:: verlet-integrate-particle ( p dt -- p' )
-    p p>> 2.0 f2*n :> v1
-    p p'>> :> v2
-    gravity dt dt * 1.0 p m>> 2.0 * / * f2*n :> v3
-    v1 v2 f2- v3 f2+
-    p p m>> particle_t <struct-boa> ; inline
+:: verlet-integrate-particle ( particle dt -- particle' )
+    particle [ p>> ] [ v>> ] bi dt v*n v+
+    gravity dt dt * particle m>> 2 * / v*n v+ :> p'
+    p' particle p>> v- dt v/n :> v'
+    p' v' particle m>> particle_t <struct-boa> ; inline
 
 CONSTANT: initial-particles
 particle_t-array{
-    S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.499 0.599 } 1.0 }
-    S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.501 0.599 } 3.0 }
+    S{ particle_t f float-array{ 0.5 0.6 } float-array{ 0 0.1 } 1.0 }
+    S{ particle_t f float-array{ 0.5 0.6 } float-array{ 0.1 0 } 3.0 }
     
-    S{ particle_t f S{ float2_t f 0.5 0.5 } S{ float2_t f 0.5 0.5 } 2.0 }
-    S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.5 0.599 } 1.0 }
-    S{ particle_t f S{ float2_t f 0.6 0.5 } S{ float2_t f 0.6 0.5 } 3.0 }
-    S{ particle_t f S{ float2_t f 0.7 0.5 } S{ float2_t f 0.7 0.5 } 1.0 }
-    S{ particle_t f S{ float2_t f 0.1 0.5 } S{ float2_t f 0.1 0.5 } 5.0 }
-    S{ particle_t f S{ float2_t f 0.2 0.5 } S{ float2_t f 0.2 0.5 } 1.0 }
-    S{ particle_t f S{ float2_t f 0.3 0.3 } S{ float2_t f 0.3 0.3 } 4.0 }
-    S{ particle_t f S{ float2_t f 0.5 0.15 } S{ float2_t f 0.5 0.15 } 1.0 }
-    S{ particle_t f S{ float2_t f 0.5 0.1 } S{ float2_t f 0.5 0.1 } 9.0 }
+    S{ particle_t f float-array{ 0.5 0.5 } float-array{ 0.1 0.1 } 2.0 }
+    S{ particle_t f float-array{ 0.5 0.6 } float-array{ -0.1 0 } 1.0 }
+    S{ particle_t f float-array{ 0.6 0.5 } float-array{ 0 -0.1 } 3.0 }
+    S{ particle_t f float-array{ 0.7 0.5 } float-array{ 0.1 0.1 } 1.0 }
+    S{ particle_t f float-array{ 0.1 0.5 } float-array{ -0.1 -0.1 } 5.0 }
+    S{ particle_t f float-array{ 0.2 0.5 } float-array{ 0 0 } 1.0 }
+    S{ particle_t f float-array{ 0.3 0.3 } float-array{ 0 0 } 4.0 }
+    S{ particle_t f float-array{ 0.5 0.15 } float-array{ 0 0 } 1.0 }
+    S{ particle_t f float-array{ 0.5 0.1 } float-array{ 0 0 } 9.0 }
 }
 
 : integrate-particles! ( particles dt -- particles )
@@ -110,18 +90,17 @@ M: fluids-world tick-game-world
 
 M:: fluids-world draw-world* ( world -- )
     world particles>> [
-        [ p>> [ x>> , ] [ y>> , ] bi ] each
+        [ p>> [ first , ] [ second , ] bi ] each
     ] curry float-array{ } make :> verts
     
     [ 
-        verts world texture>> 50.0 { 320 240 } blended-point-sprite-batch &dispose
-        
+        verts world texture>> 30.0 world dim>> { 4 4 } v/
+        blended-point-sprite-batch &dispose
         blend-state new set-gpu-state
-        
-        gaussian-blur &dispose world ramp>> { 1024 768 } step-texture &dispose
-        { 1024 768 } draw-texture
-    ] with-destructors
-    ;
+        gaussian-blur &dispose
+        world ramp>> world dim>> step-texture &dispose
+        world dim>> draw-texture
+    ] with-destructors ;
 
 GAME: fluids {
     { world-class fluids-world }
@@ -132,11 +111,10 @@ GAME: fluids {
     { tick-interval-micros $[ 60 fps ] }
 } ;
 
-MAIN: fluids
-
 fluids-world H{
     { T{ button-down } [ [
-        hand-loc get { 1024 768 } v/ 2 v*n 1 v-n { 1 -1 } v* first2 float2_t <struct-boa>
-        dup 2.0 particle_t <struct-boa> suffix
+        hand-loc get >float-array
+        world get dim>> >float-array v/ 2 v*n 1 v-n { 1 -1 } v*
+        float-array{ 0 0.2 } 2.0 particle_t <struct-boa> suffix
     ] change-particles drop ] }
 } set-gestures
index bee94d302a1a5bb8c00322feeaaf0b4e0417bdb9..ae5757efcde715e81084f91c5a1e3bf49548bad5 100644 (file)
@@ -34,12 +34,12 @@ GLSL-SHADER-FILE: window-vertex-shader vertex-shader "window.v.glsl"
 GLSL-SHADER-FILE: sobel-fragment-shader fragment-shader "sobel.f.glsl"
 GLSL-PROGRAM: sobel-program
     window-vertex-shader sobel-fragment-shader
-    window-vertex ;
+    window-vertex-format ;
 
 GLSL-SHADER-FILE: loading-fragment-shader fragment-shader "loading.f.glsl"
 GLSL-PROGRAM: loading-program
     window-vertex-shader loading-fragment-shader
-    window-vertex ;
+    window-vertex-format ;
 
 TUPLE: bunny-state
     vertexes
index 2ad6c82d7cd3906991b7bdccf8055e8ec26a1321..bdd1b51deb28cbc3d948ca73ee7f81c4db8aa8ab 100644 (file)
@@ -10,7 +10,7 @@ GLSL-SHADER-FILE: raytrace-vertex-shader vertex-shader "raytrace.v.glsl"
 GLSL-SHADER-FILE: raytrace-fragment-shader fragment-shader "raytrace.f.glsl"
 GLSL-PROGRAM: raytrace-program
     raytrace-vertex-shader raytrace-fragment-shader
-    window-vertex ;
+    window-vertex-format ;
 
 UNIFORM-TUPLE: sphere-uniforms
     { "center" vec3-uniform  f }
index 10306c4816612889b056fabf1a10c558ad71537e..b276a923b02ba1532a7d31eef6d5ac823b54c307 100644 (file)
@@ -19,28 +19,28 @@ LIBRARY: libusb
 
 ALIAS: libusb_le16_to_cpu libusb_cpu_to_le16
 
-CONSTANT: LIBUSB_CLASS_PER_INTERFACE 0
-CONSTANT: LIBUSB_CLASS_AUDIO         1
-CONSTANT: LIBUSB_CLASS_COMM          2
-CONSTANT: LIBUSB_CLASS_HID           3
-CONSTANT: LIBUSB_CLASS_PRINTER       7
-CONSTANT: LIBUSB_CLASS_PTP           6
-CONSTANT: LIBUSB_CLASS_MASS_STORAGE  8
-CONSTANT: LIBUSB_CLASS_HUB           9
-CONSTANT: LIBUSB_CLASS_DATA          10
-CONSTANT: LIBUSB_CLASS_VENDOR_SPEC HEX: ff
-TYPEDEF: int libusb_class_code
-
-CONSTANT: LIBUSB_DT_DEVICE    HEX: 01
-CONSTANT: LIBUSB_DT_CONFIG    HEX: 02
-CONSTANT: LIBUSB_DT_STRING    HEX: 03
-CONSTANT: LIBUSB_DT_INTERFACE HEX: 04
-CONSTANT: LIBUSB_DT_ENDPOINT  HEX: 05
-CONSTANT: LIBUSB_DT_HID       HEX: 21
-CONSTANT: LIBUSB_DT_REPORT    HEX: 22
-CONSTANT: LIBUSB_DT_PHYSICAL  HEX: 23
-CONSTANT: LIBUSB_DT_HUB       HEX: 29
-TYPEDEF: int libusb_descriptor_type
+C-ENUM: libusb_class_code
+    { LIBUSB_CLASS_PER_INTERFACE 0 }
+    { LIBUSB_CLASS_AUDIO         1 }
+    { LIBUSB_CLASS_COMM          2 }
+    { LIBUSB_CLASS_HID           3 }
+    { LIBUSB_CLASS_PRINTER       7 }
+    { LIBUSB_CLASS_PTP           6 }
+    { LIBUSB_CLASS_MASS_STORAGE  8 }
+    { LIBUSB_CLASS_HUB           9 }
+    { LIBUSB_CLASS_DATA          10 }
+    { LIBUSB_CLASS_VENDOR_SPEC HEX: ff } ;
+
+C-ENUM: libusb_descriptor_type
+    { LIBUSB_DT_DEVICE    HEX: 01 }
+    { LIBUSB_DT_CONFIG    HEX: 02 }
+    { LIBUSB_DT_STRING    HEX: 03 }
+    { LIBUSB_DT_INTERFACE HEX: 04 }
+    { LIBUSB_DT_ENDPOINT  HEX: 05 }
+    { LIBUSB_DT_HID       HEX: 21 }
+    { LIBUSB_DT_REPORT    HEX: 22 }
+    { LIBUSB_DT_PHYSICAL  HEX: 23 }
+    { LIBUSB_DT_HUB       HEX: 29 } ;
 
 CONSTANT: LIBUSB_DT_DEVICE_SIZE           18
 CONSTANT: LIBUSB_DT_CONFIG_SIZE           9
@@ -52,56 +52,57 @@ CONSTANT: LIBUSB_DT_HUB_NONVAR_SIZE       7
 CONSTANT: LIBUSB_ENDPOINT_ADDRESS_MASK    HEX: 0f
 CONSTANT: LIBUSB_ENDPOINT_DIR_MASK        HEX: 80
 
-CONSTANT: LIBUSB_ENDPOINT_IN  HEX: 80
-CONSTANT: LIBUSB_ENDPOINT_OUT HEX: 00
-TYPEDEF: int libusb_endpoint_direction
+C-ENUM: libusb_endpoint_direction
+    { LIBUSB_ENDPOINT_IN  HEX: 80 }
+    { LIBUSB_ENDPOINT_OUT HEX: 00 } ;
 
 CONSTANT: LIBUSB_TRANSFER_TYPE_MASK HEX: 03
 
-CONSTANT: LIBUSB_TRANSFER_TYPE_CONTROL     0
-CONSTANT: LIBUSB_TRANSFER_TYPE_ISOCHRONOUS 1
-CONSTANT: LIBUSB_TRANSFER_TYPE_BULK        2
-CONSTANT: LIBUSB_TRANSFER_TYPE_INTERRUPT   3
-TYPEDEF: int libusb_transfer_type
-
-CONSTANT: LIBUSB_REQUEST_GET_STATUS        HEX: 00
-CONSTANT: LIBUSB_REQUEST_CLEAR_FEATURE     HEX: 01
-CONSTANT: LIBUSB_REQUEST_SET_FEATURE       HEX: 03
-CONSTANT: LIBUSB_REQUEST_SET_ADDRESS       HEX: 05
-CONSTANT: LIBUSB_REQUEST_GET_DESCRIPTOR    HEX: 06
-CONSTANT: LIBUSB_REQUEST_SET_DESCRIPTOR    HEX: 07
-CONSTANT: LIBUSB_REQUEST_GET_CONFIGURATION HEX: 08
-CONSTANT: LIBUSB_REQUEST_SET_CONFIGURATION HEX: 09
-CONSTANT: LIBUSB_REQUEST_GET_INTERFACE     HEX: 0A
-CONSTANT: LIBUSB_REQUEST_SET_INTERFACE     HEX: 0B
-CONSTANT: LIBUSB_REQUEST_SYNCH_FRAME       HEX: 0C
-TYPEDEF: int libusb_standard_request
-
-CONSTANT: LIBUSB_REQUEST_TYPE_STANDARD HEX: 00
-CONSTANT: LIBUSB_REQUEST_TYPE_CLASS    HEX: 20
-CONSTANT: LIBUSB_REQUEST_TYPE_VENDOR   HEX: 40
-CONSTANT: LIBUSB_REQUEST_TYPE_RESERVED HEX: 60
-
-CONSTANT: LIBUSB_RECIPIENT_DEVICE    HEX: 00
-CONSTANT: LIBUSB_RECIPIENT_INTERFACE HEX: 01
-CONSTANT: LIBUSB_RECIPIENT_ENDPOINT  HEX: 02
-CONSTANT: LIBUSB_RECIPIENT_OTHER     HEX: 03
-TYPEDEF: int libusb_request_recipient
+C-ENUM: libusb_transfer_type
+    { LIBUSB_TRANSFER_TYPE_CONTROL     0 }
+    { LIBUSB_TRANSFER_TYPE_ISOCHRONOUS 1 }
+    { LIBUSB_TRANSFER_TYPE_BULK        2 }
+    { LIBUSB_TRANSFER_TYPE_INTERRUPT   3 } ;
+
+C-ENUM: libusb_standard_request
+    { LIBUSB_REQUEST_GET_STATUS        HEX: 00 }
+    { LIBUSB_REQUEST_CLEAR_FEATURE     HEX: 01 }
+    { LIBUSB_REQUEST_SET_FEATURE       HEX: 03 }
+    { LIBUSB_REQUEST_SET_ADDRESS       HEX: 05 }
+    { LIBUSB_REQUEST_GET_DESCRIPTOR    HEX: 06 }
+    { LIBUSB_REQUEST_SET_DESCRIPTOR    HEX: 07 }
+    { LIBUSB_REQUEST_GET_CONFIGURATION HEX: 08 }
+    { LIBUSB_REQUEST_SET_CONFIGURATION HEX: 09 }
+    { LIBUSB_REQUEST_GET_INTERFACE     HEX: 0A }
+    { LIBUSB_REQUEST_SET_INTERFACE     HEX: 0B }
+    { LIBUSB_REQUEST_SYNCH_FRAME       HEX: 0C } ;
+
+C-ENUM: libusb_request_type
+    { LIBUSB_REQUEST_TYPE_STANDARD HEX: 00 }
+    { LIBUSB_REQUEST_TYPE_CLASS    HEX: 20 }
+    { LIBUSB_REQUEST_TYPE_VENDOR   HEX: 40 }
+    { LIBUSB_REQUEST_TYPE_RESERVED HEX: 60 } ;
+
+C-ENUM: libusb_request_recipient
+    { LIBUSB_RECIPIENT_DEVICE    HEX: 00 }
+    { LIBUSB_RECIPIENT_INTERFACE HEX: 01 }
+    { LIBUSB_RECIPIENT_ENDPOINT  HEX: 02 }
+    { LIBUSB_RECIPIENT_OTHER     HEX: 03 } ;
 
 CONSTANT: LIBUSB_ISO_SYNC_TYPE_MASK HEX: 0C
 
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_NONE     0
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_ASYNC    1
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_ADAPTIVE 2
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_SYNC     3
-TYPEDEF: int libusb_iso_sync_type
+C-ENUM: libusb_iso_sync_type
+    { LIBUSB_ISO_SYNC_TYPE_NONE     0 }
+    { LIBUSB_ISO_SYNC_TYPE_ASYNC    1 }
+    { LIBUSB_ISO_SYNC_TYPE_ADAPTIVE 2 }
+    { LIBUSB_ISO_SYNC_TYPE_SYNC     3 } ;
 
 CONSTANT: LIBUSB_ISO_USAGE_TYPE_MASK HEX: 30
 
-CONSTANT: LIBUSB_ISO_USAGE_TYPE_DATA     0
-CONSTANT: LIBUSB_ISO_USAGE_TYPE_FEEDBACK 1
-CONSTANT: LIBUSB_ISO_USAGE_TYPE_IMPLICIT 2
-TYPEDEF: int libusb_iso_usage_type
+C-ENUM: libusb_iso_usage_type
+    { LIBUSB_ISO_USAGE_TYPE_DATA     0 }
+    { LIBUSB_ISO_USAGE_TYPE_FEEDBACK 1 }
+    { LIBUSB_ISO_USAGE_TYPE_IMPLICIT 2 } ;
 
 STRUCT: libusb_device_descriptor
     { bLength             uint8_t  }
@@ -175,21 +176,21 @@ C-TYPE: libusb_context
 C-TYPE: libusb_device
 C-TYPE: libusb_device_handle
 
-CONSTANT: LIBUSB_SUCCESS             0
-CONSTANT: LIBUSB_ERROR_IO            -1
-CONSTANT: LIBUSB_ERROR_INVALID_PARAM -2
-CONSTANT: LIBUSB_ERROR_ACCESS        -3
-CONSTANT: LIBUSB_ERROR_NO_DEVICE     -4
-CONSTANT: LIBUSB_ERROR_NOT_FOUND     -5
-CONSTANT: LIBUSB_ERROR_BUSY          -6
-CONSTANT: LIBUSB_ERROR_TIMEOUT       -7
-CONSTANT: LIBUSB_ERROR_OVERFLOW      -8
-CONSTANT: LIBUSB_ERROR_PIPE          -9
-CONSTANT: LIBUSB_ERROR_INTERRUPTED   -10
-CONSTANT: LIBUSB_ERROR_NO_MEM        -11
-CONSTANT: LIBUSB_ERROR_NOT_SUPPORTED -12
-CONSTANT: LIBUSB_ERROR_OTHER         -99
-TYPEDEF: int libusb_error
+C-ENUM: libusb_error
+    { LIBUSB_SUCCESS             0 }
+    { LIBUSB_ERROR_IO            -1 }
+    { LIBUSB_ERROR_INVALID_PARAM -2 }
+    { LIBUSB_ERROR_ACCESS        -3 }
+    { LIBUSB_ERROR_NO_DEVICE     -4 }
+    { LIBUSB_ERROR_NOT_FOUND     -5 }
+    { LIBUSB_ERROR_BUSY          -6 }
+    { LIBUSB_ERROR_TIMEOUT       -7 }
+    { LIBUSB_ERROR_OVERFLOW      -8 }
+    { LIBUSB_ERROR_PIPE          -9 }
+    { LIBUSB_ERROR_INTERRUPTED   -10 }
+    { LIBUSB_ERROR_NO_MEM        -11 }
+    { LIBUSB_ERROR_NOT_SUPPORTED -12 }
+    { LIBUSB_ERROR_OTHER         -99 } ;
 
 C-ENUM: libusb_transfer_status
     LIBUSB_TRANSFER_COMPLETED
@@ -200,10 +201,10 @@ C-ENUM: libusb_transfer_status
     LIBUSB_TRANSFER_NO_DEVICE
     LIBUSB_TRANSFER_OVERFLOW ;
 
-CONSTANT: LIBUSB_TRANSFER_SHORT_NOT_OK  1
-CONSTANT: LIBUSB_TRANSFER_FREE_BUFFER   2
-CONSTANT: LIBUSB_TRANSFER_FREE_TRANSFER 4
-TYPEDEF: int libusb_transfer_flags
+C-ENUM: libusb_transfer_flags
+    { LIBUSB_TRANSFER_SHORT_NOT_OK  1 }
+    { LIBUSB_TRANSFER_FREE_BUFFER   2 }
+    { LIBUSB_TRANSFER_FREE_TRANSFER 4 } ;
 
 STRUCT: libusb_iso_packet_descriptor
     { length        uint                   }
index 47d78569f847464cf94b4ed9f1d0f452232f839c..57424cd243a1080a6b0fbcb2b8db3424814a07a2 100644 (file)
@@ -1,7 +1,6 @@
 ! Copyright (C) 2010 Erik Charlebois.
 ! See http:// factorcode.org/license.txt for BSD license.
-USING: alien.c-types alien.syntax classes.struct kernel literals math
-unix.types ;
+USING: alien.c-types alien.syntax classes.struct kernel literals math unix.types ;
 IN: macho
 
 TYPEDEF: int       integer_t