Subversion Repositories Kolibri OS

Rev

Rev 2192 | 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'
44
	       db 11
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'
217
 spd_f:
218
    db 'idle'
219
    db 'full'
220
 axl_f:
221
    db ' y  '
222
    db 'x+y '
223
    db ' x  '
224
 onoff_f:
225
    db 'off '
226
    db 'on  '
227
; light_component_f:
228
;    db 'norm '                ; diffuse   |
229
;    db 'min'                  ; specular  |  or sth. like this
230
;    db 'max '                 ; emmisive  |
231
 
232
;; color_component_f:
233
;;    db ' r  '
234
;;    db ' g  '
235
;;    db ' b  '
236
 
237
	  blur_f:	       ; blur, fire
238
	    db 'off '
239
bumps_d_f:  db ' 1  '
240
	    db ' 2  '
241
	    db ' 3  '
242
	    db ' 4  '
243
	    db ' 5  '
244
 
245
 xchg_f:
246
    db 'no  '
247
    db 'x<>y'
248
    db 'z<>x'
249
    db 'y<>z'
250
 move_f:
251
    db 'obj '
252
    db 'camr'
253
;    db 'lght'
254
 bumps_f:
255
    db 'rand'
256
    db 'tex '
257
;    db 'cscl'
258
base_vector:
259
    labelvector:
260
	db   'add vector'
261
    labelvectorend:
262
    labelyminus:
263
	db   'y -'
264
    labelyminusend:
265
    labelzplus:
266
	db   'z +'
267
    labelzplusend:
268
    labelxminus:
269
	db   'x -'
270
    labelxminusend:
271
    labelxplus:
272
	db   'x +'
273
    labelxplusend:
274
    labelzminus:
275
	db   'z -'
276
    labelzminusend:
277
    labelyplus:
278
	db   'y +'
279
    labelyplusend:
280
 
281
;navigation_size = $ - labelvector
282
;        db   'set color '
283
;        db   'r -'
284
;        db   'g +'
285
;        db   'b -'
286
;        db   'b +'
287
;        db   'g -'
288
;        db   'r +'
289
 
290
    labelt:
291
	db   'DEUS CARITAS EST'
292
      if Ext=MMX
293
	db   ' (MMX)'
294
      end if
295
      if Ext=SSE
296
	db   ' (SSE)'
297
      end if
298
      if Ext=SSE2
299
	db   ' (SSE2)'
300
      end if
2736 leency 301
	db   ' 0.061',0
1979 yogev_ezra 302
    labellen:
303
	STRdata db '-1        '
304
 
305
    all_lights_size dw lightsend-lights
306
 
307
if USE_LFN
308
 
309
	file_info:
310
		dd	0
311
		dd	0
312
		dd	0
313
	 fsize	dd	0 ;180000 ; sizeof(workarea)
314
	 fptr	dd	0 ;workarea
315
	file_name:
316
		db	'/rd/1/3d/house.3ds',0
317
 
318
else
319
 
320
	file_info:
321
		dd 0
322
		dd 0
323
	 fsize	dd 1
324
		dd workarea
325
		dd hash_table
326
	file_name:
327
		db   '/rd/1/teapot.3ds',0
328
end if
329
 
330
I_END:
331
 
332
      rb 256
333
 
334
;=============================================
335
lights:
336
     .light_vector	  dd	  0.0,0.0,-1.0	 ; x,y,z  Z cooficient of vector must be negative
337
     .orginal_color_r	  db	  1		 ;  +12
338
     .orginal_color_g	  db	  255		   ;
339
     .orginal_color_b	  db	  1		 ;  +14
340
     .min_color_r	  db	  1		 ;
341
     .min_color_g	  db	  1		 ;  +16
342
     .min_color_b	  db	  1		 ;
343
     .max_color_r	  db	  255		 ;
344
     .max_color_g	  db	  255		 ;
345
     .max_color_b	  db	  255		 ;
346
     .shine		  db	  24		 ;  +21
347
 ;    LIGHT_SIZE equ ($-lights)
348
 
349
	dd	-0.5,-0.5,-1.0	 ; x,y,z ;  .light_vector
350
	db	5		 ; .orginal_color_r
351
	db	1		 ; .orginal_color_g
352
	db	135		 ; .orginal_color_b
353
	db	19		 ; .min_color_r
354
	db	19		 ; .min_color_g
355
	db	19		 ; .min_color_b
356
	db	255		 ; .max_color_r
357
	db	255		 ; .max_color_g
358
	db	255		 ; .max_color_b
359
	db	16		 ; .shine
360
 
361
	dd	0.5,0.5,-1.0	; x,y,z ;  .light_vector
362
	db	135		; .orginal_color_r
363
	db	1		; .orginal_color_g
364
	db	1		; .orginal_color_b
365
	db	19		; .min_color_r
366
	db	19		; .min_color_g
367
	db	19		; .min_color_b
368
	db	255		; .max_color_r
369
	db	255		; .max_color_g
370
	db	20		; .max_color_b
371
	db	16		; .shine
372
;        ALL_LIGHTS_SIZE equ ($ - lights)
373
;#all_lights_size dw ($ - lights) ;ALL_LIGHTS_SIZE
374
;===============================================
375
 
376
lightsend:
377
 
378
if USE_LFN = 0
379
hash_table rb 4096
380
SourceFile:
381
workarea   rb 180000
382
else
383
SourceFile:
384
workarea   rb 180
385
end if
386
EndFile   dd ?
387
align 8
388
	sinbeta dd	?;+32
389
	cosbeta dd	?
390
 
391
	xsub	dw	?
392
	zsub	dw	?;+40
393
	ysub	dw	?
394
 
395
	xx1	dw	?
396
	yy1	dw	?
397
	zz1	dw	?;+48    xx1 + 4
398
	xx2	dw	?
399
	yy2	dw	?
400
	zz2	dw	?      ; xx1 + 10
401
	xx3	dw	?;+56
402
	yy3	dw	?
403
	zz3	dw	?      ; xx1 + 16
404
	scale	dd	?		  ; help scale variable
405
   ;==
406
	triangles_count_var	dw ?
407
	points_count_var	dw ?
408
	triangles_ptr		dd ?
409
	triangles_w_z_ptr	dd ?
410
	triangles_normals_ptr	dd ?
411
	points_normals_ptr	dd ?
412
	points_normals_rot_ptr	dd ?
413
	points_ptr		dd ?
414
	points_rotated_ptr	dd ?
415
	points_translated_ptr	dd ?
416
	screen_ptr		dd ?
417
	Zbuffer_ptr		dd ?
418
 
419
   ;===
420
 
421
	point_index1	    dw ?   ;-\
422
	point_index2	    dw ?   ;  }  don't change order
423
	point_index3	    dw ?   ;-/
424
	temp_col	    dw ?
425
	high		    dd ?
426
	rand_seed	    dw ?
427
align 8
428
	buffer	dq	?
429
	errr	dd	?
430
	drr	dd	?
431
	xx	dd	?
432
	yy	dd	?
433
	xst	dd	?
434
	yst	dd	?
435
;        screen_ptr      dd     ?
436
;        Zbuffer_ptr     dd     ?
437
 
438
	matrix	rb 36
439
	cos_tab rd 360
440
	sin_tab rd 360
441
 
442
align 16
443
 
444
if USE_LFN = 0
445
     points:
446
	rw (EndFile-SourceFile)/12*3
447
	points_count = ($-points)/6
448
     triangles:
449
	rw  (EndFile-SourceFile)/12*3
450
	triangles_count = ($-triangles)/6
451
align 16
452
	real_points rd points_count*3 + 1
453
align 16
454
	rotated_points_r rd points_count*3 + 1
455
align 16
456
	points_rotated rw points_count*3 + 2 ;means translated
457
align 16
458
	triangles_normals rb triangles_count * 12 ;
459
align 16
460
	point_normals rb points_count * 12  ;one 3dvector - triple float dword x,y,z
461
align 16
462
	point_normals_rotated rb points_count * 12
463
align 16
464
	triangles_normals_rotated rb triangles_count * 12
465
 
466
else
467
    points_count = 180000/6*3
468
    triangles_count = 180000 / 6  ;($-triangles)/6
469
end if
470
align 16
471
	label trizdd dword
472
	label trizdq qword
473
	triangles_with_z rw triangles_count*4 + 2 ; triangles triple dw + z position
474
align 16
475
	vectors rb 24
476
;align 16
477
;        points_color rb 6*points_count    ; each color as word
478
;        sorted_triangles rw triangles_count*3 + 2
479
align 16
480
	bumpmap 	rb	TEXTURE_SIZE + 1
481
align 16
482
	bumpmap2	rb	TEXTURE_SIZE + 1
483
align 16
484
	envmap		rb	(TEXTURE_SIZE +1) * 3
485
align 16
486
	envmap_cub	rb	TEX_X * 3
487
align 16
488
	texmap		rb	(TEXTURE_SIZE +1) * 3
489
align 16
490
	color_map	rb	(TEXTURE_SIZE +1) * 3
491
align 16
492
	tex_points	rb	points_count * 4  ; bump_map  and texture coords
493
				; each point word x, word y
494
align 16
495
  ;      SourceFile:             ; source file temporally in screen area
496
  ;      workarea        dd      ?
497
 
498
    ;    screen          rb      SIZE_X * SIZE_Y * 3   ; screen buffer
499
;align 16
500
     ;   Z_buffer        rb      SIZE_X * SIZE_Y * 4
501
	I_Param 	rb	256
502
	memStack	rb	4000 ;memory area for stack
503
align  16
504
screen: