Форум программистов, компьютерный форум, киберфорум
K_ILYA_V
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 1.

Второй участок конвейера (комбинатор)

Запись от K_ILYA_V размещена 22.02.2020 в 14:10

Комбинатор принимает на входе 8 точек состоящих из 3 координат каждая суммарным размером 24 float и linekey длиной 4 float посредством которого генерирует 12 отрезков образованных 24 точками суммарным размером 72 float. таким образом Комбинатор сортирует точки и связывает их в отрезки в соответствии с ключом содержащимся в linekey.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
;include Code1.asm
 
vector4 struct
    x real4 ?
    y real4 ?
    z real4 ?
    r real4 ?
vector4 ends
 
vector8 struct
    a real4 ?
    b real4 ?
    c real4 ?
    d real4 ?
    e real4 ?
    f real4 ?
    g real4 ?
    h real4 ?
vector8 ends
 
matrix3_8 struct
    x vector8 <>
    y vector8 <>
    z vector8 <>
matrix3_8 ends
 
kamera struct
    pos  vector4 <>
    dirX vector4 <>
    dirY vector4 <>
    dirZ vector4 <>
kamera ends
 
point2blend record p1b:20, p1b3:3, p1b2:3, p1b1:3, p1b0:3,\
                   p0b:20, p0b3:3, p0b2:3, p0b1:3, p0b0:3
 
point8blend struct
    pb3 point2blend <>
    pb2 point2blend <>
    pb1 point2blend <>
    pb0 point2blend <>
point8blend ends
 
.data
    cube matrix3_8 << 0.0, 10.0,  0.0,  10.0,  0.0, 10.0,  0.0, 10.0>,\
                    < 0.0,  0.0, 10.0,  10.0,  0.0,  0.0, 10.0, 10.0>,\
                    < 0.0,  0.0,  0.0,   0.0, 10.0, 10.0, 10.0, 10.0>>
 
    linekey point8blend <<,1,5,1,0, \  ;0
                          ,4,7,3,0>,\  ;1
                         <,6,7,4,0, \  ;2
                          ,4,7,1,2>,\  ;3
                         <,0,0,3,2, \  ;4
                          ,0,0,6,2>,\  ;5
                         <,0,0,4,5, \  ;6
                          ,0,0,6,5>>   ;7
    
.code
WinMain proc
    vzeroall
    vmovaps ymm0,cube.x
    vmovaps ymm1,cube.y
    vmovaps ymm2,cube.z
    vmovaps ymm14,ymmword ptr linekey
    vpcmpeqd ymm15,ymm15,ymm15
    vpsrld ymm15,ymm15,1eh
    
    vpermps ymm3,ymm14,ymm0
    vpermps ymm5,ymm14,ymm1
    vpermps ymm7,ymm14,ymm1
    vpsrlvd ymm14,ymm14,ymm15
    
    vpermps ymm4,ymm14,ymm0
    vpermps ymm6,ymm14,ymm1
    vpermps ymm8,ymm14,ymm1
    vpsrlvd ymm14,ymm14,ymm15
    
    vpermps ymm9,ymm14,ymm0
    vpermps ymm11,ymm14,ymm1
    vpermps ymm13,ymm14,ymm1
    vpsrlvd ymm14,ymm14,ymm15
 
    vpermps ymm10,ymm14,ymm0
    vpermps ymm12,ymm14,ymm1
    vpermps ymm14,ymm14,ymm1
        
WinMain endp
end
Размещено в Без категории
Просмотров 141 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.