Changeset 420 for branches/thune

Show
Ignore:
Timestamp:
06/30/07 08:14:01 (17 months ago)
Author:
krobillard
Message:

Thune GL - Added 'image & mouse button words. Fixes to specular model shaders.

Location:
branches/thune/thread_safe/gl
Files:
12 modified

Legend:

Unmodified
Added
Removed
  • branches/thune/thread_safe/gl/boot.c

    r409 r420  
    7373  "    model\n" 
    7474  "    decal\n" 
     75  "    image\n" 
    7576  "    particle\n" 
    7677  "    color\n" 
  • branches/thune/thread_safe/gl/data/shader/clsbmap.gx

    r395 r420  
    4444    vec3 n, col; 
    4545    vec4 texel, lumi; 
    46     float intensity, shadow, NdotHV; 
     46    float intensity, shade, NdotHV; 
    4747 
    4848 
     
    5353    n = normalize( T * n.x + B * n.y + normal * n.z ); 
    5454 
    55     shadow = shadow2DProj(smap, gl_TexCoord[1]).r; 
    56     intensity = max( min(shadow, dot(lightDir, n)), lumi.r); 
     55    shade = shadow2DProj(smap, gl_TexCoord[1]).r; 
     56    shade = min(shade, dot(lightDir, n)); 
     57    intensity = max( shade, lumi.r); 
    5758 
    5859    texel = texture2D(cmap, gl_TexCoord[0].st); 
    59     col = texel.rgb * (intensity + gl_LightSource[0].ambient.rgb); 
     60    col = texel.rgb * 
     61          (max(intensity * gl_LightSource[0].diffuse.rgb, lumi.r) + 
     62           gl_LightSource[0].ambient.rgb); 
    6063 
    61         if( intensity > 0.0 ) 
     64        if( shade > 0.0 ) 
    6265        { 
    6366                NdotHV = max(dot(normalize(halfVector), n), 0.0); 
  • branches/thune/thread_safe/gl/data/shader/clsmap.gx

    r352 r420  
    3636    vec3 n, col; 
    3737    vec4 texel, lumi; 
    38     float intensity, shadow, NdotHV; 
     38    float intensity, shade, NdotHV; 
    3939 
    4040        lumi = texture2D(lmap, gl_TexCoord[0].st); 
    4141        n = normalize(normal); 
    42     shadow = shadow2DProj(smap, gl_TexCoord[1]).r; 
    43     intensity = max( min(shadow, dot(lightDir, n)), lumi.r); 
     42    shade = shadow2DProj(smap, gl_TexCoord[1]).r; 
     43    shade = min(shade, dot(lightDir, n)); 
     44    intensity = max( shade, lumi.r); 
    4445 
    4546    texel = texture2D(cmap, gl_TexCoord[0].st); 
    46     col = texel.rgb * (intensity + gl_LightSource[0].ambient.rgb); 
     47    col = texel.rgb * 
     48          (max(intensity * gl_LightSource[0].diffuse.rgb, lumi.r) + 
     49           gl_LightSource[0].ambient.rgb); 
    4750 
    48         if( intensity > 0.0 ) 
     51        if( shade > 0.0 ) 
    4952        { 
    5053                NdotHV = max(dot(normalize(halfVector), n), 0.0); 
  • branches/thune/thread_safe/gl/draw_list.c

    r409 r420  
    2828#include "shader.h" 
    2929#include "TexFont.h" 
     30 
     31 
     32extern struct GXEnv gxEnv; 
    3033 
    3134 
     
    6669void gr_disableTexture() 
    6770{ 
    68     glDisable( GL_TEXTURE_2D ); 
    69 } 
     71    GLint i; 
     72    for( i = 0; i < gxEnv.maxTextureUnits; ++i ) 
     73    { 
     74        glActiveTexture( GL_TEXTURE0 + i ); 
     75        glDisable( GL_TEXTURE_2D ); 
     76    } 
     77} 
     78#endif 
    7079 
    7180 
    7281void gr_enableTexture0() 
    7382{ 
    74 #if 1 
     83    GLint i; 
     84    for( i = 1; i < gxEnv.maxTextureUnits; ++i ) 
     85    { 
     86        glActiveTexture( GL_TEXTURE0 + i ); 
     87        glDisable( GL_TEXTURE_2D ); 
     88    } 
     89    glActiveTexture( GL_TEXTURE0 ); 
    7590    glEnable( GL_TEXTURE_2D ); 
    76 #else 
    77     glActiveTexture( GL_TEXTURE0 + 0 ); 
    78     glEnable( GL_TEXTURE_2D ); 
    79     glActiveTexture( GL_TEXTURE0 + 1 ); 
    80     glEnable( GL_TEXTURE_2D ); 
    81 #endif 
    82 } 
    83 #endif 
     91} 
    8492 
    8593 
     
    144152            glDepthMask( GL_FALSE ); 
    145153 
    146             gr_enable( "bt" ); 
     154            // NOTE: Must disable all texture units but GL_TEXTURE0 if not 
     155            // using a shader or text may not render properly. 
     156            gr_enableTexture0(); 
     157 
     158            gr_enable( "b" ); 
    147159            gr_disable( "adl" ); 
    148160            /* 
     
    150162            glDisable( GL_DEPTH_TEST ); 
    151163            glDisable( GL_LIGHTING ); 
    152  
    153164            glEnable( GL_BLEND ); 
    154             gr_enableTexture0(); 
    155165            */ 
    156166            glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); 
    157  
    158167 
    159168            //glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); 
     
    379388 
    380389 
     390static void gr_image( UThread* ut, UCell* val, GLfloat x, GLfloat y, 
     391                      UAtom atom ) 
     392{ 
     393    RasterHead* rh; 
     394 
     395    if( atom == UR_ATOM_TRANS ) 
     396    { 
     397        //gr_disable( "adl" ); 
     398        //gr_enable( "b" ); 
     399 
     400        glDisable( GL_ALPHA_TEST ); 
     401        glDisable( GL_DEPTH_TEST ); 
     402        glDisable( GL_LIGHTING ); 
     403        glEnable( GL_BLEND ); 
     404 
     405        glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); 
     406    } 
     407    else 
     408    { 
     409        gr_disable( "abdl" ); 
     410    } 
     411 
     412    glDepthMask( GL_FALSE ); 
     413 
     414    gr_enableTexture0(); 
     415    glBindTexture( GL_TEXTURE_2D, ur_texId(val) ); 
     416    //printf( "KR tex %d\n", ur_texId(val) ); 
     417 
     418    rh = (RasterHead*) ur_binPtr( ur_texRast(val) )->ptr.v; 
     419 
     420    glBegin( GL_QUADS ); 
     421 
     422    glMultiTexCoord2f( GL_TEXTURE0, 0.0f, 1.0f ); 
     423    glVertex2f( x, y ); 
     424    glMultiTexCoord2f( GL_TEXTURE0, 1.0f, 1.0f ); 
     425    glVertex2f( x + rh->width, y ); 
     426    glMultiTexCoord2f( GL_TEXTURE0, 1.0f, 0.0f ); 
     427    glVertex2f( x + rh->width, y + rh->height ); 
     428    glMultiTexCoord2f( GL_TEXTURE0, 0.0f, 0.0f ); 
     429    glVertex2f( x, y + rh->height ); 
     430 
     431    glEnd(); 
     432} 
     433 
     434 
     435//---------------------------------------------------------------------------- 
     436 
     437 
    381438#if 0 
    382439GLuint gr_querySamples() 
     
    10751132                ++pc; 
    10761133                VAL_WORD_OR_PC 
    1077                 glBindTexture( GL_TEXTURE_2D, ur_texId(val) ); 
     1134                if( ur_is(val, UT_TEXTURE) ) 
     1135                { 
     1136                    glBindTexture( GL_TEXTURE_2D, ur_texId(val) ); 
     1137                } 
     1138                break; 
     1139 
     1140            case DOP_IMAGE:                 // image [x,y] texture 
     1141            { 
     1142                GLfloat x, y; 
     1143                int atom = ur_sel(pc); 
     1144                ++pc; 
     1145                VAL_WORD_OR_PC 
     1146                if( ur_is(val, UT_COORD) ) 
     1147                { 
     1148                    x = (GLfloat) val->coord.elem[0]; 
     1149                    y = (GLfloat) val->coord.elem[1]; 
     1150                    ++pc; 
     1151                    VAL_WORD_OR_PC 
     1152                } 
     1153                else if( ur_is(val, UT_VEC3) ) 
     1154                { 
     1155                    x = val->vec3.xyz[0]; 
     1156                    y = val->vec3.xyz[1]; 
     1157                    ++pc; 
     1158                    VAL_WORD_OR_PC 
     1159                } 
     1160                else 
     1161                { 
     1162                    x = y = 0.0; 
     1163                } 
     1164                if( ur_is(val, UT_TEXTURE) ) 
     1165                    gr_image( ut, val, x, y, atom ); 
     1166            } 
    10781167                break; 
    10791168 
     
    13111400                    VAL_WORD_OR_PC 
    13121401                } 
     1402                else if( ur_is(val, UT_VEC3) ) 
     1403                { 
     1404                    _state.penX = val->vec3.xyz[0]; 
     1405                    _state.penY = val->vec3.xyz[1]; 
     1406                    ++pc; 
     1407                    VAL_WORD_OR_PC 
     1408                } 
    13131409                gr_drawTextCell( ut, val ); 
    13141410                break; 
     
    13441440                int hidden = ur_sel(pc);    // UR_ATOM_HIDDEN 
    13451441 
    1346                 ++pc; 
    1347                 if( ! ur_is(pc, UT_BLOCK) ) 
    1348                     return 0; 
    1349  
    13501442                _state.samplesQueryId = 0; 
    13511443 
     
    13581450                } 
    13591451 
    1360                 // Run draw-list containing samples-begin ops. 
    1361                 if( ! _runDrawList( ut, pc ) ) 
    1362                     return 0; 
     1452                // Run draw-list containing samples-begin (DOP_SAMPLES_BEGIN). 
     1453                ++pc; 
     1454                if( ur_is(pc, UT_BLOCK) ) 
     1455                { 
     1456                    if( ! _runDrawList( ut, pc ) ) 
     1457                        return 0; 
     1458                } 
     1459#if 1 
     1460                else if( ur_is(pc, UT_DRAWLIST) ) 
     1461                { 
     1462                    if( ur_dlGL(pc) ) 
     1463                        glCallList( ur_dlGL(pc) ); 
     1464                } 
     1465#endif 
    13631466 
    13641467                if( _state.samplesQueryId ) 
     
    13761479                    GLuint samples; 
    13771480                    GLuint id; 
    1378                     //UBinary* bin; 
    1379                     //UIndex binN; 
    13801481 
    13811482                    // Push query results on stack and call process-block. 
    1382  
    1383                     //bin = ur_binaryPtr( binN ); 
    13841483 
    13851484                    for( id = 1; id <= _state.samplesQueryId; ++id ) 
  • branches/thune/thread_safe/gl/draw_ops.h

    r409 r420  
    1010#define DOP_MODEL           7 
    1111#define DOP_DECAL           8 
    12 #define DOP_PARTICLE        9 
    13 #define DOP_COLOR           10 
    14 #define DOP_COLORS          11 
    15 #define DOP_VERTS           12 
    16 #define DOP_NORMALS         13 
    17 #define DOP_UVS             14 
    18 #define DOP_ATTRIB          15 
    19 #define DOP_POINTS          16 
    20 #define DOP_LINES           17 
    21 #define DOP_LINE_STRIP      18 
    22 #define DOP_TRIS            19 
    23 #define DOP_TRI_STRIP       20 
    24 #define DOP_TRI_FAN         21 
    25 #define DOP_QUADS           22 
    26 #define DOP_QUAD_STRIP      23 
    27 #define DOP_CAMERA          24 
    28 #define DOP_LIGHT           25 
    29 #define DOP_LIGHTING        26 
    30 #define DOP_PUSH            27 
    31 #define DOP_POP             28 
    32 #define DOP_TRANSLATE       29 
    33 #define DOP_ROTATE          30 
    34 #define DOP_SCALE           31 
    35 #define DOP_FONT            32 
    36 #define DOP_TEXT            33 
    37 #define DOP_SHADER          34 
    38 #define DOP_FRAMEBUFFER     35 
    39 #define DOP_SHADOW_BEGIN    36 
    40 #define DOP_SHADOW_END      37 
    41 #define DOP_SAMPLES_QUERY   38 
    42 #define DOP_SAMPLES_BEGIN   39 
     12#define DOP_IMAGE           9 
     13#define DOP_PARTICLE        10 
     14#define DOP_COLOR           11 
     15#define DOP_COLORS          12 
     16#define DOP_VERTS           13 
     17#define DOP_NORMALS         14 
     18#define DOP_UVS             15 
     19#define DOP_ATTRIB          16 
     20#define DOP_POINTS          17 
     21#define DOP_LINES           18 
     22#define DOP_LINE_STRIP      19 
     23#define DOP_TRIS            20 
     24#define DOP_TRI_STRIP       21 
     25#define DOP_TRI_FAN         22 
     26#define DOP_QUADS           23 
     27#define DOP_QUAD_STRIP      24 
     28#define DOP_CAMERA          25 
     29#define DOP_LIGHT           26 
     30#define DOP_LIGHTING        27 
     31#define DOP_PUSH            28 
     32#define DOP_POP             29 
     33#define DOP_TRANSLATE       30 
     34#define DOP_ROTATE          31 
     35#define DOP_SCALE           32 
     36#define DOP_FONT            33 
     37#define DOP_TEXT            34 
     38#define DOP_SHADER          35 
     39#define DOP_FRAMEBUFFER     36 
     40#define DOP_SHADOW_BEGIN    37 
     41#define DOP_SHADOW_END      38 
     42#define DOP_SAMPLES_QUERY   39 
     43#define DOP_SAMPLES_BEGIN   40 
  • branches/thune/thread_safe/gl/gx.c

    r403 r420  
    12171217    } 
    12181218    ur_throwErr( UR_ERR_DATATYPE, 
    1219             "lerp expected decimal!/vec3! decimal!/vec3! decimal!" ); 
     1219                 "lerp expected decimal!/vec3! decimal!/vec3! decimal!" ); 
    12201220} 
    12211221 
     
    15281528#endif 
    15291529 
     1530    gxEnv.maxTextureUnits = 0; 
    15301531    gxEnv.view = 0; 
    15311532    gxEnv.prevMouseX = MOUSE_UNSET; 
    15321533    gxEnv.prevMouseY = MOUSE_UNSET; 
     1534    gxEnv.eventBlk = 0; 
    15331535 
    15341536    _createFixedAtoms( ut ); 
    1535  
    1536     gxEnv.eventBlk = 0; 
    1537  
    15381537 
    15391538    ur_makeCalls( ut, _gxCalls, sizeof(_gxCalls) / sizeof(UCallDef) ); 
     
    15791578    glfbo_startup(); 
    15801579 
     1580    glGetIntegerv( GL_MAX_TEXTURE_UNITS, &gxEnv.maxTextureUnits ); 
     1581 
    15811582    return UR_EVAL_OK; 
    15821583} 
  • branches/thune/thread_safe/gl/gx.h

    r409 r420  
    151151struct GXEnv 
    152152{ 
     153    GLint maxTextureUnits; 
     154 
    153155    GLView* view; 
    154156    double view_wd;     // Floating-point versions of GLView width & height. 
  • branches/thune/thread_safe/gl/gx.t

    r409 r420  
    132132    model 
    133133    decal 
     134    image 
    134135    particle 
    135136 
  • branches/thune/thread_safe/gl/gx_atoms.h

    r409 r420  
    11// This file is automatically generated - do not edit. 
    22 
    3 #define UR_ATOM_DRAW_LIST_OPCODES               307 
    4 #define UR_ATOM_WIDTH           308 
    5 #define UR_ATOM_HEIGHT          309 
    6 #define UR_ATOM_AREA            310 
    7 #define UR_ATOM_RECT            311 
    8 #define UR_ATOM_RASTER          312 
    9 #define UR_ATOM_TEXTURE         313 
    10 #define UR_ATOM_ELEM            314 
    11 #define UR_ATOM_CLOSE           174 
    12 #define UR_ATOM_FOCUS           315 
    13 #define UR_ATOM_RESIZE          316 
    14 #define UR_ATOM_KEY_DOWN                317 
    15 #define UR_ATOM_KEY_UP          318 
    16 #define UR_ATOM_MOUSE_MOVE              319 
    17 #define UR_ATOM_MOUSE_UP                320 
    18 #define UR_ATOM_MOUSE_DOWN              321 
    19 #define UR_ATOM_MOUSE_WHEEL             322 
    20 #define UR_ATOM_AMBIENT         323 
    21 #define UR_ATOM_DIFFUSE         324 
    22 #define UR_ATOM_SPECULAR                325 
    23 #define UR_ATOM_POS             326 
    24 #define UR_ATOM_SHADER          327 
    25 #define UR_ATOM_VERTEX          328 
    26 #define UR_ATOM_FRAGMENT                329 
    27 #define UR_ATOM_DEFAULT         330 
    28 #define UR_ATOM_WAIT            331 
    29 #define UR_ATOM_RGB             332 
    30 #define UR_ATOM_RGBA            333 
    31 #define UR_ATOM_DEPTH           334 
    32 #define UR_ATOM_CLAMP           335 
    33 #define UR_ATOM_REPEAT          336 
    34 #define UR_ATOM_NEAREST         337 
    35 #define UR_ATOM_LINEAR          338 
    36 #define UR_ATOM_MIN             339 
    37 #define UR_ATOM_MAG             340 
    38 #define UR_ATOM_MIPMAP          341 
    39 #define UR_ATOM_ON              253 
    40 #define UR_ATOM_OFF             255 
    41 #define UR_ATOM_ADD             193 
    42 #define UR_ATOM_BURN            342 
    43 #define UR_ATOM_COLOR           343 
    44 #define UR_ATOM_TRANS           344 
    45 #define UR_ATOM_SPRITE          345 
     3#define UR_ATOM_DRAW_LIST_OPCODES               316 
     4#define UR_ATOM_WIDTH           317 
     5#define UR_ATOM_HEIGHT          318 
     6#define UR_ATOM_AREA            319 
     7#define UR_ATOM_RECT            320 
     8#define UR_ATOM_RASTER          321 
     9#define UR_ATOM_TEXTURE         322 
     10#define UR_ATOM_ELEM            323 
     11#define UR_ATOM_CLOSE           176 
     12#define UR_ATOM_FOCUS           324 
     13#define UR_ATOM_RESIZE          325 
     14#define UR_ATOM_KEY_DOWN                326 
     15#define UR_ATOM_KEY_UP          327 
     16#define UR_ATOM_MOUSE_MOVE              328 
     17#define UR_ATOM_MOUSE_UP                329 
     18#define UR_ATOM_MOUSE_DOWN              330 
     19#define UR_ATOM_MOUSE_WHEEL             331 
     20#define UR_ATOM_AMBIENT         332 
     21#define UR_ATOM_DIFFUSE         333 
     22#define UR_ATOM_SPECULAR                334 
     23#define UR_ATOM_POS             335 
     24#define UR_ATOM_SHADER          336 
     25#define UR_ATOM_VERTEX          337 
     26#define UR_ATOM_FRAGMENT                338 
     27#define UR_ATOM_DEFAULT         339 
     28#define UR_ATOM_WAIT            340 
     29#define UR_ATOM_RGB             341 
     30#define UR_ATOM_RGBA            342 
     31#define UR_ATOM_DEPTH           343 
     32#define UR_ATOM_CLAMP           344 
     33#define UR_ATOM_REPEAT          345 
     34#define UR_ATOM_NEAREST         346 
     35#define UR_ATOM_LINEAR          347 
     36#define UR_ATOM_MIN             348 
     37#define UR_ATOM_MAG             349 
     38#define UR_ATOM_MIPMAP          350 
     39#define UR_ATOM_ON              255 
     40#define UR_ATOM_OFF             257 
     41#define UR_ATOM_ADD             195 
     42#define UR_ATOM_BURN            351 
     43#define UR_ATOM_COLOR           352 
     44#define UR_ATOM_TRANS           353 
     45#define UR_ATOM_SPRITE          354 
  • branches/thune/thread_safe/gl/scripts/view.t

    r409 r420  
    11; Thune GL View 
    22 
    3  
    4 "test_fw.t" load do 
    5  
     3< 
     4 "test_fw.t" load do 
     5 "scripts/stars.t" load do 
     6> 
     7 
     80.6 :zoom 
    6910,0,10 :bg-color 
    710;off key-repeat 
    8110.0,0 :win-size 
    9  
    10 "shader/matte.gx" load.shader :matte 
    11  
    12 "scripts/stars.t" load do  400 make-stars :star-dl 
    13 "shader/particle-star.gx" 
    14 load.shader :star-sh 
    15  
    16  
     1220.0,400 :logo-pos 
     1320.0,400 :text-pos 
     14 
     15;font! ["font/FederationBold_KR.ttf" 16 256,128] make :fontF 
     16font! ["font/20thfont.ttf" 22 256,128] make :fontF 
     17 
     18"shader/matte.gx"           load.shader :matte 
     19"shader/particle-star.gx"   load.shader :star-sh 
    1720"shader/particle-sprite.gx" load.shader :sprite-sh 
    1821 
    19 10 make-stars :bstar-dl 
    2022sprite-sh :bstar-sh 
    2123500.0 :bstar-sh/size 
    22 "image/star.png" load.tex :bstar-sh/cmap 
     24"image/star01.png" load.tex :bstar-sh/cmap 
    2325 
    2426"shader/ship-lights.gx" load.shader :flare-sh 
    2527"image/lightFlareA.png" load.tex    :flare-sh/cmap 
     28 
     29[ 
     30    push 
     31        scale 20.0      ; TODO: move to view-cam pos 
     32        ;translate view-cam/ 
     33 
     34        particle 
     35        shader star-sh 
     36        call <400 make-stars> 
     37 
     38        particle/sprite 
     39        shader bstar-sh 
     40        call <10 make-stars> 
     41    pop 
     42    ;particle/off 
     43] 
     44draw-list :starfield-dl 
     45 
    2646 
    2747/* 
     
    7696 
    7797 
    78 /* 
    79 [ 
    80     "model/d7.gx"           load draw-list.compile :model-list 
    81     ;"shader/lumimap.gx" 
    82     "shader/clsmap.gx" 
    83     ;"shader/tv.gx" 
    84                             load.shader :model-shader 
    85     "image/d7_colormap.png" load.tex :model-shader/cmap 
    86     "image/d7_lights.png"   load.tex :model-shader/lmap 
     98[ 
     99    "shader/clsbmap.gx"     load.shader :d7-shader 
     100    "image/d7_colormap.png" load.tex :d7-shader/cmap 
     101    "image/d7_lights.png"   load.tex :d7-shader/lmap 
     102    "image/d7_normal.png"   load.tex :d7-shader/nmap 
     103    "model/d7_bump.gx"      load draw-list.compile dup :model-list :d7-dl 
     104 
     105    "model/d7_lights.gx" load do 
     106 
     107    [ 
     108        model 
     109        shader d7-shader 
     110        call d7-dl 
     111 
     112        shader matte 
     113        call d7-lights-query 
     114        particle/sprite 
     115            shader flare-sh call d7-lights 
     116        ;particle/off 
     117    ] 
     118    draw-list dup :ship-dl :d7-model 
    87119] :d7 
    88 */ 
    89  
    90 [ 
    91     "shader/clsbmap.gx"     load.shader :model-shader 
    92     "image/d7_colormap.png" load.tex :model-shader/cmap 
    93     "image/d7_lights.png"   load.tex :model-shader/lmap 
    94     "image/d7_normal.png"   load.tex :model-shader/nmap 
    95     "model/d7_bump.gx"      load draw-list.compile :model-list 
    96     model-list   :d7-dl 
    97     model-shader :d7-shader 
    98  
    99     "model/d7_lights.gx" load do 
    100  
    101     now :start-time 
    102     [ 
    103         now start-time sub :flare-sh/time 
    104     ] 
    105     proc :sim-update 
    106  
    107 ] :d7 
    108  
    109 [ 
    110     "model/enterprise.gx"    load draw-list.compile :model-list 
    111     "shader/clsmap.gx"       load.shader :model-shader 
    112     "image/ent_colormap.png" load.mip :model-shader/cmap 
    113     "image/ent_lights.png"   load.tex :model-shader/lmap 
    114     model-list   :ent-dl 
    115     model-shader :ent-shader 
     120 
     121[ 
     122    "shader/clsmap.gx"       load.shader :ent-shader 
     123    "image/ent_colormap.png" load.mip :ent-shader/cmap 
     124    "image/ent_lights.png"   load.tex :ent-shader/lmap 
     125    "model/enterprise.gx"    load draw-list.compile dup :model-list :ent-dl 
     126 
     127    "model/ent_lights.gx" load do 
     128 
     129    [ 
     130        model 
     131        shader ent-shader   ; FIXME: Causes text not to render. 
     132        call ent-dl 
     133 
     134        shader matte 
     135        call ent-lights-query 
     136        particle/sprite 
     137            shader flare-sh call ent-lights 
     138        ;particle/off 
     139    ] 
     140    draw-list dup :ship-dl :ent-model 
    116141] :ent 
    117142 
     
    146171 
    147172 
    148 /* 
    149 "model/enterprise.gx"    load draw-list.compile :model-list 
    150 "shader/lh_specular.gx"  load.shader :model-shader 
    151 ;0.5 :model-shader/specular 
    152 ;0.5 :model-shader/shininess 
    153 */ 
    154  
    155  
    156