Subversion Repositories Kolibri OS

Rev

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

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