Subversion Repositories Kolibri OS

Rev

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

Rev 6509 Rev 6510
Line 342... Line 342...
342
		fstp dword[edi+offs_obj_x_scale]
342
		fstp dword[edi+offs_obj_x_scale]
343
	.end:
343
	.end:
344
	ret
344
	ret
345
endp
345
endp
Line -... Line 346...
-
 
346
 
346
 
347
;description:
347
;ãáâ ­®¢ª  ­®à¬ «¥© ¤«ï £à ­¥©
348
; ¢ëç¨á«¥­¨¥ ­®à¬ «¥© ¤«ï £à ­¥© ¯® 3-¬ ¢¥à設 ¬
348
align 4
349
align 4
349
proc obj_set_normals, o_data:dword
350
proc obj_set_normals, o_data:dword
350
locals
351
locals
351
	tbl1 rd 9 ;ebp-72
352
	tbl1 rd 9 ;ebp-72
Line 394... Line 395...
394
			sub esi,72 ;tbl1
395
			sub esi,72 ;tbl1
395
			sub edi,36 ;tbl2
396
			sub edi,36 ;tbl2
396
			;v1 <-> v2
397
			;v1 <-> v2
397
			fld dword[edi+12]
398
			fld dword[edi+12]
398
			fsub dword[edi]
399
			fsub dword[edi]
399
			fstp dword[esi] ;(x1-x2)
400
			fstp dword[esi] ;(x2-x1)
400
			fld dword[edi+16]
401
			fld dword[edi+16]
401
			fsub dword[edi+4]
402
			fsub dword[edi+4]
402
			fstp dword[esi+4] ;(y1-y2)
403
			fstp dword[esi+4] ;(y2-y1)
403
			fld dword[edi+20]
404
			fld dword[edi+20]
404
			fsub dword[edi+8]
405
			fsub dword[edi+8]
405
			fstp dword[esi+8] ;(z1-z2)
406
			fstp dword[esi+8] ;(z2-z1)
406
			;v2 <-> v3
407
			;v2 <-> v3
407
			fld dword[edi+24]
408
			fld dword[edi+12]
408
			fsub dword[edi+12]
409
			fsub dword[edi+24]
409
			fstp dword[esi+12] ;(x2-x3)
410
			fstp dword[esi+12] ;(x2-x3)
410
			fld dword[edi+28]
411
			fld dword[edi+16]
411
			fsub dword[edi+16]
412
			fsub dword[edi+28]
412
			fstp dword[esi+16] ;(y2-y3)
413
			fstp dword[esi+16] ;(y2-y3)
413
			fld dword[edi+32]
414
			fld dword[edi+20]
414
			fsub dword[edi+20]
415
			fsub dword[edi+32]
415
			fstp dword[esi+20] ;(z2-z3)
416
			fstp dword[esi+20] ;(z2-z3)
416
			;v3 <-> v1
417
			;v3 <-> v1
417
			fld dword[edi]
418
			fld dword[edi+24]
418
			fsub dword[edi+24]
419
			fsub dword[edi]
419
			fstp dword[esi+24] ;(x3-x1)
420
			fstp dword[esi+24] ;(x3-x1)
420
			fld dword[edi+4]
421
			fld dword[edi+28]
421
			fsub dword[edi+28]
422
			fsub dword[edi+4]
422
			fstp dword[esi+28] ;(y3-y1)
423
			fstp dword[esi+28] ;(y3-y1)
423
			fld dword[edi+8]
424
			fld dword[edi+32]
424
			fsub dword[edi+32]
425
			fsub dword[edi+8]
425
			fstp dword[esi+32] ;(z3-z1)
426
			fstp dword[esi+32] ;(z3-z1)
Line 426... Line 427...
426
 
427
 
427
			;a1,a2,a3
428
			;A = (y2-y1) * (z3-z1) - (z2-z1) * (y3-y1)
428
			fld dword[esi+4]
-
 
429
			fmul dword[esi+8]
-
 
430
			fstp dword[edi] ;a1=(y1-y2)*(z1-z2)
-
 
431
			fld dword[esi+16]
-
 
432
			fmul dword[esi+20]
-
 
433
			fstp dword[edi+4] ;a2=(y2-y3)*(z2-z3)
-
 
434
			fld dword[esi+28]
429
			fld dword[esi+4]
435
			fmul dword[esi+32]
430
			fmul dword[esi+32]
-
 
431
			fld dword[esi+8]
436
			fstp dword[edi+8] ;a3=(y3-y1)*(z3-z1)
432
			fmul dword[esi+28]
-
 
433
			fsubp
-
 
434
			fstp dword[eax] ;set normal.a
-
 
435
 
-
 
436
			;B = (z2-z1) * (x3-x1) - (x2-x1) * (z3-z1)
-
 
437
			fld dword[esi+8]
437
			;b1,b2,b3
438
			fmul dword[esi+24]
438
			fld dword[esi]
-
 
439
			fmul dword[esi+8]
-
 
440
			fstp dword[edi+12] ;b1=(x1-x2)*(z1-z2)
-
 
441
			fld dword[esi+12]
-
 
442
			fmul dword[esi+20]
-
 
443
			fstp dword[edi+16] ;b2=(x2-x3)*(z2-z3)
-
 
444
			fld dword[esi+24]
439
			fld dword[esi]
-
 
440
			fmul dword[esi+32]
445
			fmul dword[esi+32]
441
			fsubp
-
 
442
			fstp dword[eax+4] ;set normal.b
446
			fstp dword[edi+20] ;b3=(x3-x1)*(z3-z1)
443
 
447
			;c1,á2,á3
444
			;C = (x2-x1) * (y3-y1) - (y2-y1) * (x3-x1)
448
			fld dword[esi]
-
 
449
			fmul dword[esi+4]
-
 
450
			fstp dword[edi+24] ;c1=(x1-x2)*(y1-y2)
-
 
451
			fld dword[esi+12]
-
 
452
			fmul dword[esi+16]
-
 
453
			fstp dword[edi+28] ;c2=(x2-x3)*(y2-y3)
-
 
454
			fld dword[esi+24]
445
			fld dword[esi]
455
			fmul dword[esi+28]
-
 
456
			fstp dword[edi+32] ;c3=(x3-x1)*(y3-y1)
-
 
457
			
-
 
458
			fld dword[edi]
-
 
459
			fadd dword[edi+4]
-
 
460
			fadd dword[edi+8]
-
 
461
			fstp dword[eax] ;set normal.a
-
 
462
			fld dword[edi+12]
-
 
463
			fadd dword[edi+16]
-
 
464
			fadd dword[edi+20]
-
 
465
			fstp dword[eax+4] ;set normal.b
446
			fmul dword[esi+28]
466
			fld dword[edi+24]
447
			fld dword[esi+4]
467
			fadd dword[edi+28]
448
			fmul dword[esi+24]
468
			fadd dword[edi+32]
449
			fsubp
Line 469... Line 450...
469
			fstp dword[eax+8] ;set normal.c
450
			fstp dword[eax+8] ;set normal.c
470
			
451
			
471
			add edx,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
452
			add edx,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
Line 830... Line 811...
830
		mov edx,[edi+offs_obj_normals_tri_data]
811
		mov edx,[edi+offs_obj_normals_tri_data]
831
		@@:
812
		@@:
832
			;
813
			;
833
			bt dword[draw_mode],bit_light
814
			bt dword[draw_mode],bit_light
834
			jnc .norm
815
			jnc .norm
835
				;[obj_normals_tri_count]
-
 
836
				stdcall [glNormal3fv], edx
816
				stdcall [glNormal3fv], edx
837
				add edx,12
817
				add edx,12
838
			.norm:
818
			.norm:
839
			;
819
			;
840
			movzx ebx,word[eax] ;1-ï ¢¥à設 
820
			movzx ebx,word[eax] ;1-ï ¢¥à設 
Line 1036... Line 1016...
1036
align 4
1016
align 4
1037
	@@:
1017
	@@:
1038
		add esi,2
1018
		add esi,2
1039
		;word[esi] - ­®¬¥à âà¥ã£®«ì­¨ª 
1019
		;word[esi] - ­®¬¥à âà¥ã£®«ì­¨ª 
1040
		movzx ebx,word[esi]
1020
		movzx ebx,word[esi]
-
 
1021
		;­®à¬ «¨ ¤«ï ®á¢¥é¥­¨ï
-
 
1022
		bt dword[draw_mode],bit_light
-
 
1023
		jnc .norm
-
 
1024
			mov eax,ebx
-
 
1025
			imul eax,12
-
 
1026
			add eax,[edi+offs_obj_normals_tri_data]
-
 
1027
			stdcall [glNormal3fv], eax
-
 
1028
		.norm:
-
 
1029
 
1041
		shl ebx,3
1030
		shl ebx,3
1042
		add ebx,[edi+offs_obj_tri_data]
1031
		add ebx,[edi+offs_obj_tri_data]
Line 1043... Line 1032...
1043
	
1032
	
1044
		movzx eax,word[ebx] ;1-ï ¢¥à設 
1033
		movzx eax,word[ebx] ;1-ï ¢¥à設