Subversion Repositories Kolibri OS

Rev

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