Subversion Repositories Kolibri OS

Rev

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