Subversion Repositories Kolibri OS

Rev

Rev 9512 | Rev 9585 | 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  ************************************
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
9512 IgorA 360
        db   ' 0.076',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:
387
;                db      '/rd/1/3d/house.3ds',0
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
 
9237 leency 491
     eps:  times 4 dd 0.00000
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
 
9237 leency 503
     epsone      dd 1.0001
504
     aprox       dd 0.0001
505
     epsminus    dd -0.0001
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:
9512 IgorA 515
               db      '/rd/1/3d/house.3ds',0
516
             ;  db      '/tmp0/1/sc.3ds',0
8719 leency 517
 
518
      rb 256
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: