Subversion Repositories Kolibri OS

Rev

Rev 8719 | Rev 9454 | 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
83
               db 3                ; max flag  + 1 , if = 255, no flag
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  '
292
 onoff_f:
293
    db 'off '
294
    db 'on  '
295
 
296
          blur_f:              ; blur, fire
297
            db 'off '
298
bumps_d_f:  db ' 1  '
299
            db ' 2  '
300
            db ' 3  '
301
            db ' 4  '
302
            db ' 5  '
303
 
304
 xchg_f:
305
    db 'no  '
306
    db 'x<>y'
307
    db 'z<>x'
308
    db 'y<>z'
309
 move_f:
310
    db 'obj '
311
    db 'camr'
312
    db 'wave'
313
;    db 'lght'
314
 bumps_f:
315
    db 'rand'
316
    db 'tex '
317
;    db 'cscl'
318
base_vector:
319
    labelvector:
320
        db   'add vector'
321
    labelvectorend:
322
    labelyminus:
323
        db   'y -'
324
    labelyminusend:
325
    labelzplus:
326
        db   'z +'
327
    labelzplusend:
328
    labelxminus:
329
        db   'x -'
330
    labelxminusend:
331
    labelxplus:
332
        db   'x +'
333
    labelxplusend:
334
    labelzminus:
335
        db   'z -'
336
    labelzminusend:
337
    labelyplus:
338
        db   'y +'
339
    labelyplusend:
340
 
341
 
342
    labelt:
343
        db   'DEUS CARITAS EST'
344
      if Ext=MMX
345
        db   ' (MMX)'
346
      end if
347
      if Ext=SSE
348
        db   ' (SSE)'
349
      end if
350
      if Ext=SSE2
351
        db   ' (SSE2)'
352
      end if
353
      if Ext=SSE3
354
        db   ' (SSE3)'
355
      end if
9237 leency 356
        db   ' 0.074',0
8719 leency 357
    labellen:
358
        STRdata db '-1        '
359
     lab_vert:
360
        db 'Vertices count: '
361
     lab_vert_end:
362
     lab_tr:
363
        db 'Faces count:    '
364
     lab_tr_end:
365
     lab_ed:
366
        db 'Edges count:    '
367
     lab_ed_end:
368
 
369
 
370
    all_lights_size dw lightsend-lights
371
 
372
 
373
;        file_info:
374
;                dd      0
375
;                dd      0
376
;                dd      0
377
;         fsize  dd      0 ;180000 ; sizeof(workarea)
378
;         fptr   dd      0 ;workarea
379
;        file_name:
380
;                db      '/rd/1/3d/house.3ds',0
381
;         ;      db      '/tmp0/1/ant.3ds',0
382
;
383
;      rb 256
384
 
385
;=============================================
386
lights:
387
     .light_vector        dd      0.0,0.0,-1.0   ; x,y,z  Z cooficient of vector must be negative
388
     .orginal_color_r     db      1              ;  +12
389
     .orginal_color_g     db      255              ;
390
     .orginal_color_b     db      1              ;  +14
391
     .min_color_r         db      1              ;
392
     .min_color_g         db      1              ;  +16
393
     .min_color_b         db      1              ;
394
     .max_color_r         db      255            ;
395
     .max_color_g         db      255            ;
396
     .max_color_b         db      255            ;
397
     .shine               db      24             ;  +21
398
 ;    LIGHT_SIZE equ ($-lights)
399
 
400
        dd      -0.5,-0.5,-1.0   ; x,y,z ;  .light_vector
401
        db      5                ; .orginal_color_r
402
        db      1                ; .orginal_color_g
403
        db      135              ; .orginal_color_b
404
        db      19               ; .min_color_r
405
        db      19               ; .min_color_g
406
        db      19               ; .min_color_b
407
        db      255              ; .max_color_r
408
        db      255              ; .max_color_g
409
        db      255              ; .max_color_b
410
        db      16               ; .shine
411
 
412
        dd      0.5,0.5,-1.0    ; x,y,z ;  .light_vector
413
        db      135             ; .orginal_color_r
414
        db      1               ; .orginal_color_g
415
        db      1               ; .orginal_color_b
416
        db      19              ; .min_color_r
417
        db      19              ; .min_color_g
418
        db      19              ; .min_color_b
419
        db      255             ; .max_color_r
420
        db      255             ; .max_color_g
421
        db      20              ; .max_color_b
422
        db      16              ; .shine
423
;        ALL_LIGHTS_SIZE equ ($ - lights)
424
;#all_lights_size dw ($ - lights) ;ALL_LIGHTS_SIZE
425
;===============================================
426
 
427
lightsend:
428
 
429
 
430
 
9237 leency 431
;if Ext >= SSE3
432
align 16
433
   point_light_coords:
434
              dd 50.0
435
              dd 50.0
436
              dd -215.0
437
              dd 0.0
8719 leency 438
 
9237 leency 439
 
440
              dd 815.0
441
              dd 815.0
442
              dd -215.0
443
              dd 0.0
444
 
445
              dd 1500.0
446
              dd 1500.0
447
              dd -215.0
448
              dd 0.0
449
if 0
450
    aabb1:
451
        .0              dd 1.0,1.0,1.0,0
452
        .1              dd -1.0,1.0,1.0,0
453
        .2              dd 1.0,-1.0,1.0,0
454
        .3              dd -1.0,-1.0,1.0,0
455
        .4              dd 1.0,1.0,-1.0,0
456
        .5              dd -1.0,1.0,-1.0,0
457
        .6              dd 1.0,-1.0,-1.0,0
458
        .7              dd -1.0,-1.0,-1.0,0
459
 
460
end if
461
 
462
    sign_mask:
463
              times 4 dd 0x80000000
464
    f05xz:    dd 0, 0,   - 1.0  ,0
465
 
466
    sign_z:
467
              dd -1,-1,0x7fffffff,0
8719 leency 468
    abs_mask:
469
           dd 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff
470
    emboss_bias:
471
           dw 128, 128, 128, 128, 128, 128, 128, 128
472
    zero_hgst_dd:
473
           dd -1, -1, -1, 0
474
    mask_255f:
475
    correct_texf:
476
           times 4 dd 255.0
477
    the_zero:
478
           times 4 dd 0.0
479
    tex_m2:
480
           times 4 dd 510.0
481
    the_one:
482
           times 4 dd 1.0
483
 
9237 leency 484
     eps:  times 4 dd 0.00000
485
     epsone      dd 1.0001
486
     aprox       dd 0.0001
487
     epsminus    dd -0.0001
8719 leency 488
 
9237 leency 489
 
8719 leency 490
        file_info:
491
                dd      0
492
                dd      0
493
                dd      0
494
         fsize  dd      0 ;180000 ; sizeof(workarea)
495
         fptr   dd      0 ;workarea
496
        file_name:
497
                db      '/rd/1/3d/house.3ds',0
498
             ;  db      '/tmp0/1/ant.3ds',0
499
 
500
      rb 256
501
 
502
 
503
I_END:
504
SourceFile:
505
workarea   rb 180
506
EndFile   dd ?
507
align 8
9237 leency 508
        sinbeta dd      ?;
8719 leency 509
        cosbeta dd      ?
510
 
511
        xsub    dw      ?
9237 leency 512
        zsub    dw      ?
8719 leency 513
        ysub    dw      ?
514
 
515
        col1    dd      ?
516
        col2    dd      ?
517
        col3    dd      ?
518
        scale   dd      ? ; help scale variable
519
 
520
        points_count_var        dd ?  ;
521
        triangles_count_var     dd ?  ; dont change order
522
        edges_count             dd ?  ;
9237 leency 523
        tex_points_ptr          dd ?
8719 leency 524
 
525
        temp_col            dw ?
526
        high                dd ?
527
        rand_seed           dw ?
528
align 8
529
        buffer  dq      ?
530
        errr    dd      ?
531
        drr     dd      ?
532
        xx      dd      ?
533
        yy      dd      ?
534
        xst     dd      ?
535
        yst     dd      ?
536
;        screen_ptr      dd     ?
537
;        Zbuffer_ptr     dd     ?
538
 
539
        matrix  rb 36
540
        cos_tab rd 360
541
        sin_tab rd 360
542
align 16
9237 leency 543
       lights_aligned:
544
       lights_aligned_end = $ + 16 * 12
545
                        rb 16 * 12
8719 leency 546
 
547
align 16
548
        vectors rb 24
9237 leency 549
 
8719 leency 550
align 16
551
        bumpmap         rb      TEXTURE_SIZE + 1
552
align 16
553
        bumpmap2        rb      TEXTURE_SIZE + 1
554
align 16
555
        envmap          rb      (TEXTURE_SIZE +1) * 3
556
align 16
557
        envmap_cub      rb      TEX_X * 3
558
align 16
559
        texmap          rb      (TEXTURE_SIZE +1) * 3
560
align 16
561
        color_map       rb      (TEXTURE_SIZE +100) * 3
562
align 16
9237 leency 563
 ;       tex_points      rb      points_count * 4  ; bump_map  and texture coords
564
 ;                               ; each point word x, word y
565
;align 16
566
;       lights_aligned:
567
;       lights_aligned_end = $ + 16 * 12
568
;                        rb 16 * 12
8719 leency 569
 
570
 
571
if Ext >= SSE2
572
        sse_repository  rb      1024
573
end if
574
        procinfo:
9237 leency 575
                        rb     2048 ; process info
8719 leency 576
        I_Param         rb      256
577
        memStack:
578
        rb 2000
579
align  16
580
screen: