Subversion Repositories Kolibri OS

Rev

Rev 9585 | Details | Compare with Previous | Last modification | View Log | RSS feed

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