Subversion Repositories Kolibri OS

Rev

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