Subversion Repositories Kolibri OS

Rev

Rev 8025 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1979 yogev_ezra 1
; DATA AREA  ************************************
2
 
8047 leency 3
        i3              dw      3
4
        i12             dd      12
5
        i256            dw      256
6
        i255d           dd      255
7
        dot_max         dd      1.0      ; dot product max and min
8
        dot_min         dd      0.0
9
        env_const       dd      1.05
10
        correct_tex     dw      255
11
        tex_x_div2      dw      TEX_X  / 2
12
        tex_y_div2      dw      TEX_Y  / 2
13
        xobs            dw      0 ;SIZE_X / 2 ;200 ;observer  = camera
14
        yobs            dw      0 ;SIZE_Y / 2 ;200 ;coordinates
15
        zobs            dw      -1000
6619 leency 16
     ;   size_x          dw      SIZE_X
17
     ;   size_y          dw      SIZE_Y
1979 yogev_ezra 18
 
8047 leency 19
        re_alloc_flag db 0
20
        angle_counter dw 0
21
        piD180        dd 0.017453292519943295769236907684886
22
        piD128        dd 0.024544
23
        const6        dw 6,6,6,6
24
        x_offset      dw SIZE_X / 2
25
        y_offset      dw SIZE_Y / 2
26
        z_offset      dw 0
27
        rsscale       dd 175.0           ; next real scale
28
        vect_x        dw SIZE_X / 2
29
        vect_y        dw SIZE_Y / 2
30
        vect_z        dw 0
31
        angle_x       dw 0
32
        angle_y       dw 0
33
        angle_z       dw 0
34
        sin_amplitude dd 50
35
        sin_frq       dd 0.7
36
        sin_delta     dd 0.07    ; wave frequency granularity
37
        convert_muler:
38
                      dd 1, 10, 100, 1000, 10000
39
        XYZpartices:
40
                      db 'X','Y','Z'
41
        i10           dw 10
42
        offset_y:
43
        i25           dw 25  ; screen buff offset
44
        offset_x:
45
        i5            dw 5
46
        triangles_ptr           dd 0
47
        triangles_w_z_ptr       dd 0
48
        triangles_normals_ptr   dd 0
49
        points_normals_ptr      dd 0
50
        points_normals_rot_ptr  dd 0
51
        points_ptr              dd 0
52
        points_rotated_ptr      dd 0
53
        points_translated_ptr   dd 0
54
        screen_ptr              dd 0
55
        Zbuffer_ptr             dd 0
56
        vertices_index_ptr      dd 0
1979 yogev_ezra 57
 
6769 IgorA 58
 
59
     ;   draw_win_at_first db 1
8047 leency 60
        vertex_edit_no    dw 0
61
        edit_start_x:
62
                          dw 0
63
        edit_start_y      dw 0
64
        edit_end_x:
65
                          dw 0
66
        edit_end_y        dw 0
67
        mouse_state           dd 0
1979 yogev_ezra 68
 
8047 leency 69
        menu:
70
               db 2                ; button number  = index
71
               db 'rotary    '     ; label
72
               db 3                ; max flag  + 1 , if = 255, no flag
73
 r_flag        db 1                ; flag
74
               dd axl_f            ; offset to flags description
75
 
76
               db 3
77
               db 'shd. model'
78
            if Ext >= SSE3
79
               db 13
80
            else
81
               db 12
82
            end if
8014 leency 83
 dr_flag       db 0  ;  6 - dots
8047 leency 84
               dd shd_f
1979 yogev_ezra 85
 
8047 leency 86
               db 4
87
               db 'speed     '
88
               db 2
1979 yogev_ezra 89
 speed_flag    db 0
8047 leency 90
               dd spd_f
1979 yogev_ezra 91
 
8047 leency 92
               db 5
93
               db 'zoom out  '
94
               db 255
95
               db ?
96
               dd ?
1979 yogev_ezra 97
 
8047 leency 98
               db 6
99
               db 'zoom in   '
100
               db 255
101
               db ?
102
               dd ?
1979 yogev_ezra 103
 
8047 leency 104
               db 7
105
               db 'catmull   '
106
               db 2
1979 yogev_ezra 107
catmull_flag   db 1
8047 leency 108
               dd onoff_f
1979 yogev_ezra 109
 
8047 leency 110
               db 8
111
               db 'culling   '
112
               db 2
6619 leency 113
culling_flag   db 0
8047 leency 114
               dd onoff_f
1979 yogev_ezra 115
 
8047 leency 116
               db 9
117
               db 'rand.light'
118
               db 255
119
               db ?
120
               dd ?
1979 yogev_ezra 121
 
8047 leency 122
               db 10
123
               db 'blur      '
124
               db 6
1979 yogev_ezra 125
blur_flag      db 0
8047 leency 126
               dd blur_f
1979 yogev_ezra 127
 
8047 leency 128
               db 11
129
               db 'mirror x  '
130
               db 2
1979 yogev_ezra 131
mirr_x_flag    db 0
8047 leency 132
               dd onoff_f
1979 yogev_ezra 133
 
8047 leency 134
               db 12
135
               db 'mirror y  '
136
               db 2
1979 yogev_ezra 137
mirr_y_flag    db 0
8047 leency 138
               dd onoff_f
1979 yogev_ezra 139
 
8047 leency 140
               db 13
141
               db 'mirror z  '
142
               db 2
1979 yogev_ezra 143
mirr_z_flag    db 0
8047 leency 144
               dd onoff_f
1979 yogev_ezra 145
 
8047 leency 146
               db 14
147
               db 'xchg      '
148
               db 4
1979 yogev_ezra 149
xchg_flag      db 0
8047 leency 150
               dd xchg_f
1979 yogev_ezra 151
 
8047 leency 152
               db 15
153
               db 'emboss    '
154
               db 2
1979 yogev_ezra 155
emboss_flag    db 0
8047 leency 156
               dd onoff_f
1979 yogev_ezra 157
 
8047 leency 158
               db 16
159
               db 'fire      '
160
               db 3
1979 yogev_ezra 161
fire_flag      db 0
8047 leency 162
               dd blur_f
1979 yogev_ezra 163
 
8047 leency 164
               db 17
165
               db 'move      '
166
               db 3
1979 yogev_ezra 167
move_flag      db 0
8047 leency 168
               dd move_f
1979 yogev_ezra 169
 
8047 leency 170
                  db 18
171
                  db 'generate  '
172
                  db 6
173
generator_flag    db 0
174
                  dd blur_f
1979 yogev_ezra 175
 
8047 leency 176
                  db 19
177
                  db 'bumps     '
178
                  db 2
179
bumps_flag        db 0
180
                  dd bumps_f
1979 yogev_ezra 181
 
8047 leency 182
                  db 20
183
                  db 'bumps deep'
184
                  db 4
1979 yogev_ezra 185
bumps_deep_flag   db 3
8047 leency 186
                  dd bumps_d_f
1979 yogev_ezra 187
 
8047 leency 188
                  db 21
189
                  db 're-map tex'
190
                  db 255
191
map_tex_flag      db ? ;1
192
                  dd ?  ;bumps_d_f
2736 leency 193
 
8047 leency 194
                  db 22
195
                  db 'bright +  '
196
                  db 6
2736 leency 197
inc_bright_flag   db 0 ;1
8047 leency 198
                  dd blur_f
2736 leency 199
 
8047 leency 200
                  db 23
201
                  db 'bright -  '
202
                  db 6
2736 leency 203
dec_bright_flag   db 0 ;1
8047 leency 204
                  dd blur_f
2736 leency 205
 
8047 leency 206
                  db 24
207
                  db 'wav effect'
208
                  db 2
209
sinus_flag        db 0
210
                  dd onoff_f
2984 leency 211
 
6769 IgorA 212
 
8047 leency 213
                  db 25
214
                  db 'editor    '
215
                  db 2
216
 edit_flag        db 0
217
                  dd onoff_f
2736 leency 218
;                  db 24
219
;                  db 'max       '
220
;                  db 2
221
;max_flag          db 0 ;1
222
;                  dd blur_f
223
;
224
;                  db 25
225
;                  db 'min       '
226
;                  db 2
227
;min_flag          db 0 ;1
228
;                  dd blur_f
229
 
230
 
231
 
1979 yogev_ezra 232
;                  db 21
233
;                  db 'light No. '
234
;                  db 3
235
;light_no_flag     db 0
236
;                  dd bumps_d_f
237
 
238
;                db 22
239
;                db 'light comp'
240
;                db 3
241
;light_comp_flag db 0
242
;                dd light_component_f
243
 
244
;;                db 23
245
;;                db 'col. comp'
246
;;                db 3
247
;;color_comp_flag db 0
248
;;                dd color_component_f
249
 
250
 
251
 
252
 
8047 leency 253
 
254
               db -1       ; end mark
255
 
256
 
257
flags:             ; flags description
1979 yogev_ezra 258
 shd_f:
259
    db 'flat'
260
    db 'grd '
261
    db 'env '
262
    db 'bump'
263
    db 'tex '
264
    db 'pos '
265
    db 'dots'
266
    db 'txgr'
267
    db '2tex'
268
    db 'btex'
269
    db 'cenv'
2881 leency 270
    db 'grdl'
8047 leency 271
    db 'rphg'
1979 yogev_ezra 272
 spd_f:
273
    db 'idle'
274
    db 'full'
275
 axl_f:
276
    db ' y  '
277
    db 'x+y '
278
    db ' x  '
279
 onoff_f:
280
    db 'off '
281
    db 'on  '
282
; light_component_f:
283
;    db 'norm '                ; diffuse   |
284
;    db 'min'                  ; specular  |  or sth. like this
285
;    db 'max '                 ; emmisive  |
286
 
287
;; color_component_f:
288
;;    db ' r  '
289
;;    db ' g  '
290
;;    db ' b  '
291
 
8047 leency 292
          blur_f:              ; blur, fire
293
            db 'off '
1979 yogev_ezra 294
bumps_d_f:  db ' 1  '
8047 leency 295
            db ' 2  '
296
            db ' 3  '
297
            db ' 4  '
298
            db ' 5  '
1979 yogev_ezra 299
 
300
 xchg_f:
301
    db 'no  '
302
    db 'x<>y'
303
    db 'z<>x'
304
    db 'y<>z'
305
 move_f:
306
    db 'obj '
307
    db 'camr'
2984 leency 308
    db 'wave'
1979 yogev_ezra 309
;    db 'lght'
310
 bumps_f:
311
    db 'rand'
312
    db 'tex '
313
;    db 'cscl'
314
base_vector:
315
    labelvector:
8047 leency 316
        db   'add vector'
1979 yogev_ezra 317
    labelvectorend:
318
    labelyminus:
8047 leency 319
        db   'y -'
1979 yogev_ezra 320
    labelyminusend:
321
    labelzplus:
8047 leency 322
        db   'z +'
1979 yogev_ezra 323
    labelzplusend:
324
    labelxminus:
8047 leency 325
        db   'x -'
1979 yogev_ezra 326
    labelxminusend:
327
    labelxplus:
8047 leency 328
        db   'x +'
1979 yogev_ezra 329
    labelxplusend:
330
    labelzminus:
8047 leency 331
        db   'z -'
1979 yogev_ezra 332
    labelzminusend:
333
    labelyplus:
8047 leency 334
        db   'y +'
1979 yogev_ezra 335
    labelyplusend:
336
 
337
;navigation_size = $ - labelvector
338
;        db   'set color '
339
;        db   'r -'
340
;        db   'g +'
341
;        db   'b -'
342
;        db   'b +'
343
;        db   'g -'
344
;        db   'r +'
345
 
346
    labelt:
8047 leency 347
        db   'DEUS CARITAS EST'
1979 yogev_ezra 348
      if Ext=MMX
8047 leency 349
        db   ' (MMX)'
1979 yogev_ezra 350
      end if
351
      if Ext=SSE
8047 leency 352
        db   ' (SSE)'
1979 yogev_ezra 353
      end if
354
      if Ext=SSE2
8047 leency 355
        db   ' (SSE2)'
1979 yogev_ezra 356
      end if
8047 leency 357
      if Ext=SSE3
358
        db   ' (SSE3)'
359
      end if
360
        db   ' 0.070',0
1979 yogev_ezra 361
    labellen:
8047 leency 362
        STRdata db '-1        '
1979 yogev_ezra 363
 
364
    all_lights_size dw lightsend-lights
365
 
366
if USE_LFN
367
 
8047 leency 368
        file_info:
369
                dd      0
370
                dd      0
371
                dd      0
372
         fsize  dd      0 ;180000 ; sizeof(workarea)
373
         fptr   dd      0 ;workarea
374
        file_name:
375
                db      '/rd/1/3d/house.3ds',0
1979 yogev_ezra 376
 
377
else
378
 
8047 leency 379
        file_info:
380
                dd 0
381
                dd 0
382
         fsize  dd 1
383
                dd workarea
384
                dd hash_table
385
        file_name:
386
                db   '/rd/1/teapot.3ds',0
1979 yogev_ezra 387
end if
388
 
6769 IgorA 389
  ;I_END:
1979 yogev_ezra 390
 
391
      rb 256
392
 
393
;=============================================
394
lights:
8047 leency 395
     .light_vector        dd      0.0,0.0,-1.0   ; x,y,z  Z cooficient of vector must be negative
396
     .orginal_color_r     db      1              ;  +12
397
     .orginal_color_g     db      255              ;
398
     .orginal_color_b     db      1              ;  +14
399
     .min_color_r         db      1              ;
400
     .min_color_g         db      1              ;  +16
401
     .min_color_b         db      1              ;
402
     .max_color_r         db      255            ;
403
     .max_color_g         db      255            ;
404
     .max_color_b         db      255            ;
405
     .shine               db      24             ;  +21
1979 yogev_ezra 406
 ;    LIGHT_SIZE equ ($-lights)
407
 
8047 leency 408
        dd      -0.5,-0.5,-1.0   ; x,y,z ;  .light_vector
409
        db      5                ; .orginal_color_r
410
        db      1                ; .orginal_color_g
411
        db      135              ; .orginal_color_b
412
        db      19               ; .min_color_r
413
        db      19               ; .min_color_g
414
        db      19               ; .min_color_b
415
        db      255              ; .max_color_r
416
        db      255              ; .max_color_g
417
        db      255              ; .max_color_b
418
        db      16               ; .shine
1979 yogev_ezra 419
 
8047 leency 420
        dd      0.5,0.5,-1.0    ; x,y,z ;  .light_vector
421
        db      135             ; .orginal_color_r
422
        db      1               ; .orginal_color_g
423
        db      1               ; .orginal_color_b
424
        db      19              ; .min_color_r
425
        db      19              ; .min_color_g
426
        db      19              ; .min_color_b
427
        db      255             ; .max_color_r
428
        db      255             ; .max_color_g
429
        db      20              ; .max_color_b
430
        db      16              ; .shine
1979 yogev_ezra 431
;        ALL_LIGHTS_SIZE equ ($ - lights)
432
;#all_lights_size dw ($ - lights) ;ALL_LIGHTS_SIZE
433
;===============================================
434
 
435
lightsend:
8047 leency 436
 
437
 
438
 
439
 
6769 IgorA 440
align 16
441
    emboss_bias:
8047 leency 442
           dw 128, 128, 128, 128, 128, 128, 128, 128
443
    zero_hgst_dd:
444
           dd -1, -1, -1, 0
445
    mask_255f:
446
           times 4 dd 255.0
447
    the_zero:
448
           times 4 dd 0.0
1979 yogev_ezra 449
 
6769 IgorA 450
I_END:
1979 yogev_ezra 451
if USE_LFN = 0
452
hash_table rb 4096
453
SourceFile:
454
workarea   rb 180000
455
else
456
SourceFile:
457
workarea   rb 180
458
end if
459
EndFile   dd ?
460
align 8
8047 leency 461
        sinbeta dd      ?;+32
462
        cosbeta dd      ?
1979 yogev_ezra 463
 
8047 leency 464
        xsub    dw      ?
465
        zsub    dw      ?;+40
466
        ysub    dw      ?
1979 yogev_ezra 467
 
8047 leency 468
        xx1     dw      ?
469
        yy1     dw      ?
470
        zz1     dw      ?;+48    xx1 + 4
471
        xx2     dw      ?
472
        yy2     dw      ?
473
        zz2     dw      ?      ; xx1 + 10
474
        xx3     dw      ?;+56
475
        yy3     dw      ?
476
        zz3     dw      ?      ; xx1 + 16
477
        col1    dd      ?
478
        col2    dd      ?
479
        col3    dd      ?
480
        scale   dd      ? ; help scale variable
481
        edges_counter dd ?
1979 yogev_ezra 482
   ;==
8047 leency 483
        triangles_count_var     dd ?
484
        points_count_var        dd ?
6769 IgorA 485
     ;   triangles_ptr           dd ?
486
     ;   triangles_w_z_ptr       dd ?
487
     ;   triangles_normals_ptr   dd ?
488
     ;   points_normals_ptr      dd ?
489
     ;   points_normals_rot_ptr  dd ?
490
     ;   points_ptr              dd ?
491
     ;   points_rotated_ptr      dd ?
492
     ;   points_translated_ptr   dd ?
493
     ;   screen_ptr              dd ?
494
     ;   Zbuffer_ptr             dd ?
495
     ;   vertices_index_ptr      dd ?
496
      ;  edit_start_x:
8047 leency 497
                                dw ?    ; don't change order
6769 IgorA 498
      ;  edit_start_y            dw ?
3066 leency 499
     ;   edges_ptr               dd ?
8047 leency 500
        size_y_var:
501
                                dw ?
502
        size_x_var:
503
                                dw ?
504
        x_start:
505
                                dw ?
506
        y_start:
507
                                dw ?
1979 yogev_ezra 508
 
509
   ;===
510
 
8047 leency 511
        point_index1        dd ?   ;-\
512
        point_index2        dd ?   ;  }  don't change order
513
        point_index3        dd ?   ;-/
514
        temp_col            dw ?
515
        high                dd ?
516
        rand_seed           dw ?
1979 yogev_ezra 517
align 8
8047 leency 518
        buffer  dq      ?
519
        errr    dd      ?
520
        drr     dd      ?
521
        xx      dd      ?
522
        yy      dd      ?
523
        xst     dd      ?
524
        yst     dd      ?
1979 yogev_ezra 525
;        screen_ptr      dd     ?
526
;        Zbuffer_ptr     dd     ?
527
 
8047 leency 528
        matrix  rb 36
529
        cos_tab rd 360
530
        sin_tab rd 360
1979 yogev_ezra 531
 
532
align 16
533
 
534
if USE_LFN = 0
535
     points:
8047 leency 536
        rw (EndFile-SourceFile)/12*3
537
        points_count = ($-points)/6
1979 yogev_ezra 538
     triangles:
8047 leency 539
        rw  (EndFile-SourceFile)/12*3
540
        triangles_count = ($-triangles)/6
1979 yogev_ezra 541
align 16
8047 leency 542
        real_points rd points_count*3 + 1
1979 yogev_ezra 543
align 16
8047 leency 544
        rotated_points_r rd points_count*3 + 1
1979 yogev_ezra 545
align 16
8047 leency 546
        points_rotated rw points_count*3 + 2 ;means translated
1979 yogev_ezra 547
align 16
8047 leency 548
        triangles_normals rb triangles_count * 12 ;
1979 yogev_ezra 549
align 16
8047 leency 550
        point_normals rb points_count * 12  ;one 3dvector - triple float dword x,y,z
1979 yogev_ezra 551
align 16
8047 leency 552
        point_normals_rotated rb points_count * 12
1979 yogev_ezra 553
align 16
8047 leency 554
        triangles_normals_rotated rb triangles_count * 12
1979 yogev_ezra 555
 
556
else
557
    points_count = 180000/6*3
558
    triangles_count = 180000 / 6  ;($-triangles)/6
559
end if
560
align 16
8047 leency 561
        label trizdd dword
562
        label trizdq qword
563
        triangles_with_z rw triangles_count*4 + 2 ; triangles triple dw + z position
1979 yogev_ezra 564
align 16
8047 leency 565
        vectors rb 24
1979 yogev_ezra 566
;align 16
567
;        points_color rb 6*points_count    ; each color as word
568
;        sorted_triangles rw triangles_count*3 + 2
569
align 16
8047 leency 570
        bumpmap         rb      TEXTURE_SIZE + 1
1979 yogev_ezra 571
align 16
8047 leency 572
        bumpmap2        rb      TEXTURE_SIZE + 1
1979 yogev_ezra 573
align 16
8047 leency 574
        envmap          rb      (TEXTURE_SIZE +1) * 3
1979 yogev_ezra 575
align 16
8047 leency 576
        envmap_cub      rb      TEX_X * 3
1979 yogev_ezra 577
align 16
8047 leency 578
        texmap          rb      (TEXTURE_SIZE +1) * 3
1979 yogev_ezra 579
align 16
8047 leency 580
        color_map       rb      (TEXTURE_SIZE +1) * 3
1979 yogev_ezra 581
align 16
8047 leency 582
        tex_points      rb      points_count * 4  ; bump_map  and texture coords
583
                                ; each point word x, word y
1979 yogev_ezra 584
align 16
8047 leency 585
       lights_aligned:
586
       lights_aligned_end = $ + 16 * 12
587
                        rb 16 * 12
588
 
589
 
2881 leency 590
if Ext >= SSE2
8047 leency 591
        sse_repository  rb      1024
2881 leency 592
end if
1979 yogev_ezra 593
  ;      SourceFile:             ; source file temporally in screen area
594
  ;      workarea        dd      ?
595
 
596
    ;    screen          rb      SIZE_X * SIZE_Y * 3   ; screen buffer
597
;align 16
598
     ;   Z_buffer        rb      SIZE_X * SIZE_Y * 4
8047 leency 599
        procinfo:
600
                        rb     1024 ; process info
601
        I_Param         rb      256
602
        memStack:
603
        rb 2000
1979 yogev_ezra 604
align  16
6769 IgorA 605
screen: