Subversion Repositories Kolibri OS

Rev

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