Subversion Repositories Kolibri OS

Rev

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

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