Subversion Repositories Kolibri OS

Rev

Rev 5353 | Rev 5418 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5353 Rev 5392
Line 261... Line 261...
261
			fmul st0,st3       ;st0 *= v.coord.Y
261
			fmul st0,st3       ;st0 *= v.coord.Y
262
			faddp              ;st0 = v.coord.X * m[0] + v.coord.Y * m[1]
262
			faddp              ;st0 = v.coord.X * m[0] + v.coord.Y * m[1]
263
			fld dword[ebx+8]   ;st0 = m[2]
263
			fld dword[ebx+8]   ;st0 = m[2]
264
			fmul st0,st2       ;st0 *= v.coord.Z
264
			fmul st0,st2       ;st0 *= v.coord.Z
265
			fadd dword[ebx+12] ;st0 += m[3]
265
			fadd dword[ebx+12] ;st0 += m[3]
266
			faddp              ;st0 += v.ec.X
266
			faddp              ;st0 = v.ec.X
267
			fstp dword[edx+offs_vert_ec] ;v.ec.X = v.coord.X * m[0] + v.coord.Y * m[1] + v.coord.Z * m[2] + m[3]
267
			fstp dword[edx+offs_vert_ec] ;v.ec.X = v.coord.X * m[0] + v.coord.Y * m[1] + v.coord.Z * m[2] + m[3]
268
			add ebx,16 ;следущая строка матрицы
268
			add ebx,16 ;следущая строка матрицы
269
			add edx,4  ;следущая координата вектора
269
			add edx,4  ;следущая координата вектора
270
		loop .cycle_0
270
		loop .cycle_0
271
		ffree st0
271
		ffree st0
Line 280... Line 280...
280
		mov edx,[v]
280
		mov edx,[v]
Line 281... Line 281...
281
 
281
 
282
		fld dword[edx+offs_vert_ec+offs_X]
282
		fld dword[edx+offs_vert_ec+offs_X]
283
		fld dword[edx+offs_vert_ec+offs_Y]
283
		fld dword[edx+offs_vert_ec+offs_Y]
-
 
284
		fld dword[edx+offs_vert_ec+offs_Z]
Line 284... Line 285...
284
		fld dword[edx+offs_vert_ec+offs_Z]
285
		fld dword[edx+offs_vert_ec+offs_W]
285
 
286
 
286
		mov ecx,4
287
		mov ecx,4
287
		.cycle_1:
288
		.cycle_1:
288
			fld dword[ebx]     ;st0 = m[0]
289
			fld dword[ebx]     ;st0 = m[0]
289
			fmul st0,st3       ;st0 *= v.ec.X
290
			fmul st0,st4       ;st0 *= v.ec.X
290
			fld dword[ebx+4]   ;st0 = m[1]
291
			fld dword[ebx+4]   ;st0 = m[1]
291
			fmul st0,st3       ;st0 *= v.ec.Y
292
			fmul st0,st4       ;st0 *= v.ec.Y
292
			faddp              ;st0 = v.ec.X * m[0] + v.ec.Y * m[1]
293
			faddp              ;st0 = v.ec.X * m[0] + v.ec.Y * m[1]
-
 
294
			fld dword[ebx+8]   ;st0 = m[2]
293
			fld dword[ebx+8]   ;st0 = m[2]
295
			fmul st0,st3       ;st0 *= v.ec.Z
-
 
296
			faddp              ;st0 = v.ec.X * m[0] + v.ec.Y * m[1] + v.ec.Z * m[2]
294
			fmul st0,st2       ;st0 *= v.ec.Z
297
			fld dword[ebx+12]  ;st0 = m[3]
295
			fadd dword[ebx+12] ;st0 += m[3]
298
			fmul st0,st2       ;st0 *= v.ec.W
296
			faddp              ;st0 = v.pc.X
299
			faddp              ;st0 = v.pc.X
297
			fstp dword[edx+offs_vert_pc] ;v.pc.X = v.ec.X * m[0] + v.ec.Y * m[1] + v.ec.Z * m[2] + m[3]
300
			fstp dword[edx+offs_vert_pc] ;v.pc.X = v.ec.X * m[0] + v.ec.Y * m[1] + v.ec.Z * m[2] + v.ec.W * m[3]
298
			add ebx,16 ;следущая строка матрицы
301
			add ebx,16 ;следущая строка матрицы
299
			add edx,4  ;следущая координата вектора
302
			add edx,4  ;следущая координата вектора
300
		loop .cycle_1
303
		loop .cycle_1
301
		ffree st0
304
		ffree st0
302
		fincstp
305
		fincstp
303
		ffree st0
306
		ffree st0
304
		fincstp
307
		fincstp
-
 
308
		ffree st0
-
 
309
		fincstp
Line 305... Line 310...
305
		ffree st0
310
		ffree st0
306
		fincstp
311
		fincstp
307
 
312
 
308
		mov ebx,eax
313
		mov ebx,eax
Line 313... Line 318...
313
 
318
 
314
		fld dword[edi] ;edi = &n
319
		fld dword[edi] ;edi = &n
315
		fld dword[edi+offs_Y]
320
		fld dword[edi+offs_Y]
Line 316... Line -...
316
		fld dword[edi+offs_Z]
-
 
317
 
321
		fld dword[edi+offs_Z]
318
		mov ecx,3
322
 
319
		add edx,offs_vert_normal
323
		add edx,offs_vert_normal
320
		.cycle_2:
324
 
321
			fld dword[ebx]   ;st0 = m[0]
325
		fld dword[ebx]   ;st0 = m[0]
322
			fmul st0,st3     ;st0 *= n.X
326
		fmul st0,st3     ;st0 *= n.X
323
			fld dword[ebx+4] ;st0 = m[1]
327
		fld dword[ebx+4] ;st0 = m[1]
324
			fmul st0,st3     ;st0 *= n.Y
328
		fmul st0,st3     ;st0 *= n.Y
325
			faddp            ;st0 = n.X * m[0] + n.Y * m[1]
329
		faddp            ;st0 = n.X * m[0] + n.Y * m[1]
326
			fld dword[ebx+8] ;st0 = m[2]
330
		fld dword[ebx+8] ;st0 = m[2]
327
			fmul st0,st2     ;st0 *= n.Z
331
		fmul st0,st2     ;st0 *= n.Z
-
 
332
		faddp            ;st0 = v.normal.X
-
 
333
		fstp dword[edx]  ;v.normal.X = n.X * m[0] + n.Y * m[1] + n.Z * m[2]
-
 
334
 
-
 
335
		fld dword[ebx+16];st0 = m[4]
-
 
336
		fmul st0,st3     ;st0 *= n.X
328
			faddp            ;st0 = v.normal.X
337
		fld dword[ebx+20];st0 = m[5]
-
 
338
		fmul st0,st3     ;st0 *= n.Y
-
 
339
		faddp            ;st0 = n.X * m[4] + n.Y * m[5]
-
 
340
		fld dword[ebx+24];st0 = m[6]
329
			fstp dword[edx]  ;v.normal.X = n.X * m[0] + n.Y * m[1] + n.Z * m[2]
341
		fmul st0,st2     ;st0 *= n.Z
-
 
342
		faddp            ;st0 = v.normal.X
-
 
343
		fstp dword[edx+4];v.normal.X = n.X * m[4] + n.Y * m[5] + n.Z * m[6]
-
 
344
 
-
 
345
		fld dword[ebx+32];st0 = m[8]
-
 
346
		fmul st0,st3     ;st0 *= n.X
-
 
347
		fld dword[ebx+36];st0 = m[9]
-
 
348
		fmul st0,st3     ;st0 *= n.Y
330
			add ebx,16 ;следущая строка матрицы
349
		faddp            ;st0 = n.X * m[8] + n.Y * m[9]
-
 
350
		fld dword[ebx+40];st0 = m[10]
-
 
351
		fmul st0,st2     ;st0 *= n.Z
Line 331... Line 352...
331
			add edx,4  ;следущая координата вектора
352
		faddp            ;st0 = v.normal.X
332
		loop .cycle_2
353
		fstp dword[edx+8];v.normal.X = n.X * m[8] + n.Y * m[9] + n.Z * m[10]
333
 
-
 
334
		cmp dword[eax+offs_cont_normalize_enabled],0
354
 
335
		je .end_els
355
		cmp dword[eax+offs_cont_normalize_enabled],0
336
			sub edx,12
356
		je .end_els
337
			stdcall gl_V3_Norm,edx
357
			stdcall gl_V3_Norm,edx
338
		jmp .end_els
358
		jmp .end_els
Line 476... Line 496...
476
	cmp dword[edx+offs_cont_lighting_enabled],0
496
	cmp dword[edx+offs_cont_lighting_enabled],0
477
	je .els_0
497
	je .els_0
478
		stdcall gl_shade_vertex, edx,ebx
498
		stdcall gl_shade_vertex, edx,ebx
479
		jmp @f
499
		jmp @f
480
	.els_0:
500
	.els_0:
481
		mov eax,[edx+offs_cont_current_color]
-
 
482
		mov [ebx+offs_vert_color],eax
501
		mov esi,edx
483
		mov eax,[edx+offs_cont_current_color+4]
502
		add esi,offs_cont_current_color
484
		mov [ebx+offs_vert_color+4],eax
503
		mov edi,ebx
485
		mov eax,[edx+offs_cont_current_color+8]
504
		add edi,offs_vert_color ;edi = &v.color
486
		mov [ebx+offs_vert_color+8],eax
505
		mov ecx,4
-
 
506
		rep movsd
487
	@@:
507
	@@:
Line 488... Line 508...
488
 
508
 
489
	; tex coords
509
	; tex coords
490
	cmp dword[edx+offs_cont_texture_2d_enabled],0
510
	cmp dword[edx+offs_cont_texture_2d_enabled],0