Subversion Repositories Kolibri OS

Rev

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