Changeset 403 for branches/thune

Show
Ignore:
Timestamp:
05/29/07 02:47:07 (18 months ago)
Author:
krobillard
Message:

Thune (ts) - Added UDatatype compare. GL version gets wait-events and
particle/sprite.

Location:
branches/thune/thread_safe
Files:
10 modified

Legend:

Unmodified
Added
Removed
  • branches/thune/thread_safe/eval.c

    r402 r403  
    9797 
    9898 
     99typedef int (*UDatatypeCmpFunc)( UThread*, const UCell*, const UCell*, int ); 
    99100typedef int (*UDatatypeSelFunc)( UThread*, UCell*, const UCell*, UCell* ); 
    100101 
     
    714715                (a->ctx.valBlk == b->ctx.valBlk) ) 
    715716                return 1; 
     717            break; 
     718 
     719        default: 
     720            if( ur_type(a) >= UT_BI_COUNT ) 
     721            { 
     722                UDatatypeCmpFunc func = ut->env->customDT 
     723                            [ ur_type(a) - UT_BI_COUNT ].compare; 
     724                return func( ut, a, b, 1 ); 
     725            } 
    716726            break; 
    717727    } 
  • branches/thune/thread_safe/gl/boot.c

    r390 r403  
    4343  "]\n" 
    4444  "func :handle.events\n" 
     45  "[wid | handler]\n" 
     46  "[\n" 
     47  "    [] 'wait display.events [\n" 
     48  "        dup first wid get dup :handler\n" 
     49  "        ift (second handler do) drop\n" 
     50  "    ] iter/2\n" 
     51  "]\n" 
     52  "func :wait-events\n" 
    4553  "[list block! | ctx wrd n]\n" 
    4654  "[\n" 
  • branches/thune/thread_safe/gl/draw_list.c

    r395 r403  
    142142            } 
    143143            glEnable( GL_VERTEX_PROGRAM_POINT_SIZE ); 
    144             gr_disableTexture(); 
     144            //gr_disableTexture(); 
    145145 
    146146            /* 
     
    838838                    case UR_ATOM_OFF: 
    839839                        glDisable( GL_VERTEX_PROGRAM_POINT_SIZE ); 
     840                        glDisable( GL_POINT_SPRITE ); 
    840841                        break; 
    841842 
     
    853854                        gr_setState( GRS_PARTICLE ); 
    854855                        glBlendFunc( GL_SRC_COLOR, GL_ONE_MINUS_SRC_ALPHA ); 
     856                        break; 
     857 
     858                    case UR_ATOM_SPRITE: 
     859                        gr_setState( GRS_PARTICLE ); 
     860                        glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); 
     861                        glEnable( GL_POINT_SPRITE ); 
    855862                        break; 
    856863 
  • branches/thune/thread_safe/gl/gx.c

    r390 r403  
    589589 
    590590 
    591 // (blk -- blk) 
     591// (blk [wait] -- blk) 
    592592UR_CALL( uc_display_events ) 
    593593{ 
     594    int wait = 0; 
     595 
     596    if( ur_is(tos, UT_WORD) ) 
     597    { 
     598        if( ur_atom(tos) == UR_ATOM_WAIT ) 
     599        { 
     600            wait = 1; 
     601            UR_S_DROP; 
     602            tos = UR_TOS; 
     603        } 
     604        else 
     605        { 
     606            ur_throwErr( UR_ERR_DATATYPE, "display.events expected 'wait" ); 
     607            return; 
     608        } 
     609    } 
     610 
    594611    if( ! ur_is(tos, UT_BLOCK) ) 
    595612    { 
     
    600617    gxEnv.eventBlk = ur_block( tos ); 
    601618    gxEnv.eventBlk->used = 0; 
     619 
     620    if( wait ) 
     621    { 
     622        glv_waitEvent( gView ); 
     623    } 
    602624 
    603625    glv_handleEvents( gView ); 
     
    14671489    FIXED_ATOM( "fragment", 8, UR_ATOM_FRAGMENT ); 
    14681490    FIXED_ATOM( "default",  7, UR_ATOM_DEFAULT ); 
     1491    FIXED_ATOM( "wait",     4, UR_ATOM_WAIT ); 
    14691492 
    14701493    // Textures 
     
    14871510    FIXED_ATOM( "color",    5, UR_ATOM_COLOR ); 
    14881511    FIXED_ATOM( "trans",    5, UR_ATOM_TRANS ); 
     1512    FIXED_ATOM( "sprite",   6, UR_ATOM_SPRITE ); 
    14891513 
    14901514#if MAKE_ATOM_HEADER 
  • branches/thune/thread_safe/gl/gx.t

    r390 r403  
    8888        first wid get do 
    8989        */ 
    90  
    9190        ; Handler stack usage: (data -- data)  
    92  
    9391        dup first wid get dup :handler 
    9492            ift (second handler do) drop 
     
    9694] 
    9795func :handle.events     ; (widget -- ) 
     96 
     97 
     98[wid | handler] 
     99[ 
     100    [] 'wait display.events [ 
     101        ; Handler stack usage: (data -- data)  
     102        dup first wid get dup :handler 
     103            ift (second handler do) drop 
     104    ] iter/2 
     105] 
     106func :wait-events       ; (widget -- ) 
    98107 
    99108 
  • branches/thune/thread_safe/gl/gx_atoms.h

    r395 r403  
    2626#define UR_ATOM_FRAGMENT                335 
    2727#define UR_ATOM_DEFAULT         336 
    28 #define UR_ATOM_RGB             337 
    29 #define UR_ATOM_RGBA            338 
    30 #define UR_ATOM_DEPTH           339 
    31 #define UR_ATOM_CLAMP           340 
    32 #define UR_ATOM_REPEAT          341 
    33 #define UR_ATOM_NEAREST         342 
    34 #define UR_ATOM_LINEAR          343 
    35 #define UR_ATOM_MIN             344 
    36 #define UR_ATOM_MAG             345 
    37 #define UR_ATOM_MIPMAP          346 
     28#define UR_ATOM_WAIT            337 
     29#define UR_ATOM_RGB             338 
     30#define UR_ATOM_RGBA            339 
     31#define UR_ATOM_DEPTH           340 
     32#define UR_ATOM_CLAMP           341 
     33#define UR_ATOM_REPEAT          342 
     34#define UR_ATOM_NEAREST         343 
     35#define UR_ATOM_LINEAR          344 
     36#define UR_ATOM_MIN             345 
     37#define UR_ATOM_MAG             346 
     38#define UR_ATOM_MIPMAP          347 
    3839#define UR_ATOM_ON              253 
    3940#define UR_ATOM_OFF             255 
    4041#define UR_ATOM_ADD             193 
    41 #define UR_ATOM_BURN            347 
    42 #define UR_ATOM_COLOR           348 
    43 #define UR_ATOM_TRANS           349 
     42#define UR_ATOM_BURN            348 
     43#define UR_ATOM_COLOR           349 
     44#define UR_ATOM_TRANS           350 
     45#define UR_ATOM_SPRITE          351 
  • branches/thune/thread_safe/gl/gx_dt.c

    r390 r403  
    4545    (void) depth; 
    4646    ur_strCat( out, "<draw-list>", 11 ); 
     47} 
     48 
     49 
     50static int cmp_dlist( UThread* ut, const UCell* a, const UCell* b, int mode ) 
     51{ 
     52    (void) ut; 
     53    (void) mode; 
     54    if( ur_dlBlkN(a) ) 
     55    { 
     56        if( ur_dlBlkN(a) == ur_dlBlkN(b) )  
     57            return 1; 
     58    } 
     59    else 
     60    { 
     61        if( ur_dlGL(a) == ur_dlGL(b) )  
     62            return 1; 
     63    } 
     64    return 0; 
    4765} 
    4866 
     
    921939 
    922940 
     941static int cmp_nop( UThread* ut, const UCell* a, const UCell* b, int mode ) 
     942{ 
     943    return 0; 
     944} 
     945 
     946 
    923947static int select_nop( UThread* ut, UCell* val, const UCell* sel, 
    924948                       UCell* res ) 
     
    949973{ 
    950974    {"draw-list!", 0, 0, 
    951         make_dlist, to_nop, toStr_dlist, toStr_dlist, 
     975        make_dlist, to_nop, toStr_dlist, toStr_dlist, cmp_dlist, 
    952976        select_nop, recycle_nop, mark_dlist, rmres_nop }, 
    953977 
    954978    {"raster!", 0, 0, 
    955         make_raster, to_nop, toStr_raster, toStr_raster, 
     979        make_raster, to_nop, toStr_raster, toStr_raster, cmp_nop, 
    956980        select_raster, recycle_nop, mark_raster, rmres_nop }, 
    957981 
    958982    {"texture!", 0, 0, 
    959         make_texture, to_nop, toStr_texture, toStr_texture, 
     983        make_texture, to_nop, toStr_texture, toStr_texture, cmp_nop, 
    960984        select_texture, recycle_texture, mark_texture, rmres_nop }, 
    961985 
    962986    {"font!", 0, 0, 
    963         make_rfont, to_nop, toStr_rfont, toStr_rfont, 
     987        make_rfont, to_nop, toStr_rfont, toStr_rfont, cmp_nop, 
    964988        select_rfont, recycle_nop, mark_rfont, rmres_nop }, 
    965989 
    966990    {"shader!", 0, 0, 
    967         make_shader, to_nop, toStr_shader, toStr_shader, 
     991        make_shader, to_nop, toStr_shader, toStr_shader, cmp_nop, 
    968992        select_nop, recycle_nop, mark_shader, rmres_shader }, 
    969993 
    970994    {"framebuffer!", 0, 0, 
    971         make_fbo, to_nop, toStr_fbo, toStr_fbo, 
     995        make_fbo, to_nop, toStr_fbo, toStr_fbo, cmp_nop, 
    972996        select_fbo, recycle_nop, mark_fbo, rmres_nop }, 
    973997}; 
  • branches/thune/thread_safe/gl/scripts/view.t

    r395 r403  
    44"test_fw.t" load do 
    55 
    6 'd7b 
    7 [ 
    8     d7 [ 
    9         "model/d7.gx"           load draw-list.compile :model-list 
    10         ;"shader/lumimap.gx" 
    11         "shader/clsmap.gx" 
    12         ;"shader/tv.gx" 
    13                                 load.shader :model-shader 
    14         "image/d7_colormap.png" load.tex :model-shader/cmap 
    15         "image/d7_lights.png"   load.tex :model-shader/lmap 
    16     ] 
    17     d7b [ 
    18         "shader/clsbmap.gx"     load.shader :model-shader 
    19         "image/d7_colormap.png" load.tex :model-shader/cmap 
    20         "image/d7_lights.png"   load.tex :model-shader/lmap 
    21         "image/d7_normal.png"   load.tex :model-shader/nmap 
    22         "model/d7_bump.gx"      load draw-list.compile :model-list 
    23     ] 
    24     ent [ 
    25         "model/enterprise.gx"    load draw-list.compile :model-list 
    26         "shader/clsmap.gx"       load.shader :model-shader 
    27         "image/ent_colormap.png" load.mip :model-shader/cmap 
    28         "image/ent_lights.png"   load.tex :model-shader/lmap 
    29     ] 
    30 ] case 
     610,0,10 :bg-color 
     7;off key-repeat 
     8 
     9"scripts/stars.t" load do  400 make-stars :star-dl 
     10"shader/particle-star.gx" 
     11load.shader :star-sh 
     12 
     13 
     14"shader/particle-sprite.gx" load.shader :sprite-sh 
     15 
     1610 make-stars :bstar-dl 
     17sprite-sh :bstar-sh 
     18500.0 :bstar-sh/size 
     19"image/star.png" load.tex :bstar-sh/cmap 
     20 
     21 
     22/* 
     23*/ 
     24[ 
     25    ;"shader/particle-sprite.gx" load.shader 
     26    sprite-sh copy :sun-sh 
     27    500.0 :sun-sh/size 
     28    "image/sun.png" load.tex :sun-sh/cmap 
     29 
     30    #[0.0 0 20.0] :pos 
     31 
     32    [ 
     33        particle/sprite 
     34        shader sun-sh 
     35        verts none ;#[0.0 0 20.0] 
     36        points v #[0] 
     37        particle/off 
     38    ] 
     39        pos 5 poke 
     40    draw-list 'sun-dl set 
     41 
     42    [ 
     43        dup first  :pos/1 
     44        dup second :pos/2 
     45            third  :pos/3 
     46    ] 
     47    proc :update     ; (vec3 -- ) 
     48] 
     49context :sun-sprite 
     50 
     51 
     52/* 
     53[ 
     54    "model/d7.gx"           load draw-list.compile :model-list 
     55    ;"shader/lumimap.gx" 
     56    "shader/clsmap.gx" 
     57    ;"shader/tv.gx" 
     58                            load.shader :model-shader 
     59    "image/d7_colormap.png" load.tex :model-shader/cmap 
     60    "image/d7_lights.png"   load.tex :model-shader/lmap 
     61] :d7 
     62*/ 
     63 
     64[ 
     65    "shader/clsbmap.gx"     load.shader :model-shader 
     66    "image/d7_colormap.png" load.tex :model-shader/cmap 
     67    "image/d7_lights.png"   load.tex :model-shader/lmap 
     68    "image/d7_normal.png"   load.tex :model-shader/nmap 
     69    "model/d7_bump.gx"      load draw-list.compile :model-list 
     70    model-list   :d7-dl 
     71    model-shader :d7-shader 
     72] :d7 
     73 
     74[ 
     75    "model/enterprise.gx"    load draw-list.compile :model-list 
     76    "shader/clsmap.gx"       load.shader :model-shader 
     77    "image/ent_colormap.png" load.mip :model-shader/cmap 
     78    "image/ent_lights.png"   load.tex :model-shader/lmap 
     79    model-list   :ent-dl 
     80    model-shader :ent-shader 
     81] :ent 
    3182 
    3283 
    33841024,1024 dup :smap-size shadowmap :light-fb 
    34 light-fb/texture :model-shader/smap 
    3585"shader/matte.gx" load.shader :smap-shader 
    3686camera [ 
     
    58108 
    59109 
     110d7  do  light-fb/texture :d7-shader/smap 
     111ent do  light-fb/texture :ent-shader/smap 
     112 
     113 
    60114/* 
    61115"model/enterprise.gx"    load draw-list.compile :model-list 
     
    97151 
    98152    light-pos light-cam/update 
     153    light-pos sun-sprite/update 
    99154] 
    100155func.env :move-light    ; (dx dy -- ) 
     
    105160    key-down [ 
    106161        esc [quit] 
     162        ;p ["key" .] 
     163        m [ 
     164            model-list d7-dl same? 
     165                [ent-dl :model-list  ent-shader :model-shader] 
     166                [d7-dl  :model-list  d7-shader  :model-shader] 
     167                either 
     168        ] 
    107169        f10 [display.snapshot "snapshot.png" save.png] 
    108170    ] 
     
    114176        dup :ortho-cam/viewport 
    115177        dup :view-cam/viewport 
     178 
     179        ;vec3! [area/3 area/4] reduce make :star-sh/windowsize 
    116180    ] 
    117181 
     
    140204        */ 
    141205 
     206        /* 
     207        */ 
     208        particle 
     209        push 
     210            scale 20.0 
     211 
     212            shader star-sh  call star-dl 
     213 
     214            particle/sprite 
     215            shader bstar-sh call bstar-dl 
     216        pop 
     217        ;particle/off 
     218 
     219        call sun-dl 
     220 
    142221        light   [on light-pos ambient light-amb] 
    143222        ;light   [on 1.0,0.8,1.0] 
     
    148227        call model-list 
    149228        shader none 
     229 
     230 
     231        ;ortho-cam 
    150232    ] 
    151233] 
  • branches/thune/thread_safe/gl/test_fw.t

    r360 r403  
    33 
    44; Run from thune/gl directory. 
    5 "data" change-dir 
     5"data_loc" change-dir 
    66 
    77 
     
    5454[] proc :sim-update 
    5555 
     560,0,155 :bg-color 
    5657 
    5758[wid] 
    5859[ 
    59     0,0,155 display.swap 
     60    bg-color display.swap 
    6061    [ 
    61         wid handle.events 
     62        wid wait-events 
    6263        sim-update 
    6364        wid/draw draw 
  • branches/thune/thread_safe/urlan.h

    r390 r403  
    201201 
    202202 
     203/* 
     204typedef struct 
     205{ 
     206    uint8_t  type; 
     207    uint8_t  flags; 
     208    uint16_t inputMask; 
     209    UIndex   wordN; 
     210    UIndex   valN; 
     211    UIndex   bodyN; 
     212} 
     213UCellComponent; 
     214*/ 
     215 
     216 
    203217typedef struct 
    204218{ 
     
    344358    UCellContext  ctx; 
    345359    UCellContext  port; 
     360    //UCellComponent  comp; 
    346361    UCellCall     call; 
    347362    UCellFunction func; 
     
    481496    void (*toString)( UThread*, const UCell*, UString*, int depth ); 
    482497    void (*toText)( UThread*, const UCell*, UString*, int depth ); 
     498    int  (*compare)( UThread*, const UCell*, const UCell*, int mode ); 
    483499    int  (*selectAtom)( UThread*, UCell* val, const UCell* sel, UCell* res ); 
    484500    void (*recycle)( UrlanEnv*, int phase );