Форум программистов, компьютерный форум, киберфорум
K_ILYA_V
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Третий участок (секатор)

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

Третий участок работоспособен на данный момент только частично по оси Х и приведен в ознакомительных целях. Задача секатора обнаруживать отрезки выходящие за рамки глобальной области видимости, отсекать их и генерировать в место них новые точки с координатами на границе видимой области.

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
;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
 
.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>>
                    
    screen vector4  <20.0,  5.0,  0.0,  0.0>
    
.code
WinMain proc
    vzeroall
    vmovaps ymm0,cube.x         ;x1
    vmovaps ymm1,cube.y         ;x2
    vmovaps ymm2,cube.z         ;y1
    vmovaps ymm3,cube.x         ;y2
    vmovaps ymm4,cube.y         ;z1
    vmovaps ymm5,cube.z         ;z2
    
    vbroadcastss ymm6,screen.x
    vbroadcastss ymm8,screen.y
    vsubps ymm7,ymm7,ymm6
    vsubps ymm9,ymm9,ymm8
    
    vcmpps ymm10,ymm0,ymm6,5
    vcmpps ymm11,ymm1,ymm6,5
    vpand ymm15,ymm10,ymm11
    ;vpmovmskb eax,ymm15
    
    vandps ymm11,ymm10,ymm6
    vandps ymm10,ymm10,ymm0
    vsubps ymm10,ymm10,ymm11
    vsubps ymm0,ymm0,ymm10
    vsubps ymm11,ymm0,ymm1
    vdivps ymm10,ymm10,ymm11
    
    vsubps ymm11,ymm2,ymm3
    vmulps ymm11,ymm11,ymm10
    vsubps ymm2,ymm2,ymm11
    
    vsubps ymm11,ymm4,ymm5
    vmulps ymm11,ymm11,ymm10
    vsubps ymm4,ymm4,ymm11
WinMain endp
end
Дальнейшая публикация частей векторного-тракта пока временно отложена до момента написания "конвертер-компрессора" и "параллельного растропостроителя" и сборки их в единый "каркасный генератор".

Работа не то чтобы очень сложная, но хитрая. Так что раньше 2-3 недель новостей не будет.
Размещено в Без категории
Просмотров 130 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.