Compare commits
1035 Commits
blender-ti
...
input_meth
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1254e98a48 | ||
![]() |
151f2467a4 | ||
![]() |
6919ea1726 | ||
![]() |
b64b18f8ac | ||
226eb53bc7 | |||
c57d9c05d6 | |||
8600dc6365 | |||
2f637004d5 | |||
4fe2b45d3d | |||
12e9ccb256 | |||
cf15147053 | |||
2420a3c189 | |||
3c1d286ca5 | |||
![]() |
409043c69d | ||
a6bb564c99 | |||
4afd5db47e | |||
87471874a9 | |||
0762451e86 | |||
9ae458362a | |||
627f27502f | |||
f96fd4430a | |||
76bfce231a | |||
58005e135b | |||
4cb0e25678 | |||
894dbda575 | |||
47ebf96de4 | |||
5996ad2fd4 | |||
af92f3d325 | |||
e1f5e19eee | |||
9345d2d723 | |||
e3a6f1c152 | |||
4649f17c38 | |||
b5399deac3 | |||
c751055513 | |||
18d08ede22 | |||
4e60462881 | |||
ed935ae5ad | |||
e177c51430 | |||
a42638d265 | |||
a5cd6a029f | |||
f86fd544c1 | |||
7de1efd274 | |||
367204a063 | |||
![]() |
36fc98cb0b | ||
8b6759a4a9 | |||
0efa41e996 | |||
44df4242fa | |||
e35b4bac0a | |||
670f5deda6 | |||
ee010650f6 | |||
![]() |
36652982dd | ||
![]() |
a54d863a93 | ||
20a1778148 | |||
9c782c17ba | |||
f2c3b5a384 | |||
4ee53074aa | |||
72f75927f5 | |||
7d88f0ce4d | |||
![]() |
cce89d04ee | ||
![]() |
d399927749 | ||
3bd46904be | |||
22ecceec4a | |||
4ad0d33d69 | |||
e7de96f5eb | |||
dfc56f1776 | |||
965a49a3e6 | |||
11ad517536 | |||
8d42c2f3ea | |||
e240bd3932 | |||
2334e5ecd4 | |||
![]() |
dc199369d1 | ||
![]() |
80496abbf4 | ||
![]() |
29c2b70a2c | ||
b7d053beaa | |||
fd4cd626be | |||
503dbb65c0 | |||
![]() |
b2a5b96ff4 | ||
b12dbdd93b | |||
f0278387e8 | |||
9ddc4b1fba | |||
5f4c99e66f | |||
75aaa476cb | |||
14b951747f | |||
46c80d5d11 | |||
1cb59394ae | |||
46d2b6cd0b | |||
0c60129331 | |||
2491dc702b | |||
0154096fd5 | |||
915235c87a | |||
bcbbc66795 | |||
9afc5b09fd | |||
2b7e1c6011 | |||
c9675b460e | |||
c979f2656d | |||
143bac3350 | |||
f386f574b1 | |||
af18fb8036 | |||
5561a0bbef | |||
2240c260c1 | |||
6a45b2a232 | |||
f4f5f3b209 | |||
2e8ba179f7 | |||
3d3f82a8df | |||
ef8b0043f5 | |||
eb62d47ff4 | |||
e7cb4d2a0d | |||
![]() |
cdcef1d993 | ||
8152a6c66c | |||
d21e254907 | |||
77785ce708 | |||
3fea13ed6c | |||
8fa55d95e4 | |||
8bc84e10f5 | |||
e9645806f5 | |||
98d4831969 | |||
![]() |
4fc691f619 | ||
![]() |
316bae9fe8 | ||
f1ea1da5e5 | |||
3b9517946a | |||
3f92bc76fd | |||
9f64a86436 | |||
435eaa79b2 | |||
d7a32383c0 | |||
e3b68dbaf8 | |||
![]() |
3e5962656a | ||
c35f563bb7 | |||
b00a943fe8 | |||
649a2bcc3d | |||
![]() |
aa0b268acb | ||
9311a5be04 | |||
c1149198b5 | |||
0085c3c5e5 | |||
fae3850293 | |||
08fd38cf52 | |||
ed350d9a52 | |||
7b0d6a1e6c | |||
73633388ff | |||
![]() |
1087b9236f | ||
![]() |
a677da8638 | ||
![]() |
b5cf3cd415 | ||
![]() |
f65879fd51 | ||
![]() |
ff27b12904 | ||
![]() |
30654e186f | ||
![]() |
60a035c52a | ||
fde03ec578 | |||
0f159b7306 | |||
98beae0c11 | |||
![]() |
b68166355a | ||
2bf7215130 | |||
14502a3557 | |||
e0283f8b6c | |||
fffc35c34a | |||
8299602f1f | |||
3d6b912293 | |||
4a55637a0d | |||
4135458c3d | |||
c3eab0e2f4 | |||
9901eed588 | |||
48b3a09c41 | |||
ea671a6e87 | |||
a36778ab8e | |||
b4337e870e | |||
ed01da08fd | |||
e2855b81a4 | |||
6650436d4a | |||
e2e69f6011 | |||
6147ad3596 | |||
b0ea6aecb3 | |||
a7536dfac5 | |||
d472651713 | |||
808c6e383b | |||
70dee80a8b | |||
77447f0401 | |||
157e6ef22d | |||
78b91eb23f | |||
c6b2422db0 | |||
d6931a6ce6 | |||
d5e0613d6e | |||
6a6336ce77 | |||
e0b960a77e | |||
7bd15aa347 | |||
bbe68ddf7e | |||
339147666a | |||
716642379f | |||
b6192bfa3b | |||
15a212ee06 | |||
d813f70382 | |||
3e5de9dc3f | |||
656b868db9 | |||
aee3d19082 | |||
56d4aed17d | |||
c6acfdf2a0 | |||
92f13f7287 | |||
929dbc6644 | |||
888ab78edf | |||
48a720055f | |||
216989686b | |||
![]() |
c05785ec93 | ||
43fa4baa6c | |||
6308c16675 | |||
57c9d69e6b | |||
b9d9df9810 | |||
25c5542fe7 | |||
789eaa0f5b | |||
f425de9341 | |||
731f3476b7 | |||
8319a91ad4 | |||
82aa32c3a9 | |||
176705c480 | |||
31093f896f | |||
591eb27efa | |||
46e2d5ee41 | |||
9124ecb16b | |||
419c2723d3 | |||
62e9435dbc | |||
e6e78a143e | |||
2288d738bf | |||
cc0623ff6c | |||
7b0c529fe2 | |||
a5f674de30 | |||
f8dcd717ce | |||
102d3ad595 | |||
6f7b4a3a3e | |||
0facc48308 | |||
4bf40bb646 | |||
2f43befed9 | |||
4878444ce7 | |||
e05be6bdbd | |||
391096252b | |||
d4315398fc | |||
d6579fe7f3 | |||
50c667372e | |||
5d85949b2d | |||
8b2fbd6bbf | |||
0756fe2684 | |||
0cb1c2cdee | |||
82d2718c8f | |||
cd54f07a3c | |||
793ed3fa74 | |||
2ad61438d8 | |||
fbd4dfb2c6 | |||
19cc516f51 | |||
![]() |
baccf32076 | ||
d06b1a5d8b | |||
![]() |
e42f974ae6 | ||
2b2ac5d3cc | |||
ffbb950da9 | |||
2218135f67 | |||
![]() |
122ad8ac6d | ||
54c6a9fd49 | |||
8e16c5294b | |||
729dc98be1 | |||
c07241dd18 | |||
2f6e9cb4fd | |||
a2d95b2f5a | |||
a08ac5513f | |||
3ae0126f86 | |||
0f947f2cc5 | |||
998a867ba3 | |||
70a4bcd7f5 | |||
0d58608b44 | |||
3563276d70 | |||
7d2590bbfa | |||
5efd2b7f36 | |||
4dae5a7c3a | |||
5f7b273236 | |||
b72eab5d6b | |||
![]() |
f086c5a1ea | ||
94f0d18470 | |||
![]() |
c4b7440bc0 | ||
![]() |
7d281401fd | ||
![]() |
23c7716bbb | ||
1e5d508567 | |||
7019c2bb7f | |||
0b6631414b | |||
![]() |
98f0333110 | ||
![]() |
7907014ed7 | ||
5674ac9b7e | |||
![]() |
28d9641a3d | ||
e103c9773f | |||
c721ef5fd6 | |||
2dc5365d0d | |||
80d1d624d3 | |||
90bf426554 | |||
694d74bc6d | |||
e82e67584d | |||
dab0bd9de6 | |||
b7f5ab0cd3 | |||
d526ef607d | |||
a52fbfa828 | |||
b505ecaa4e | |||
90f3102f9c | |||
bfdb9f9e0f | |||
a15d584a4f | |||
ed52706d35 | |||
fa821a969e | |||
97e2d62c79 | |||
902ba7b25c | |||
6dcf8ba189 | |||
832a97f002 | |||
c31f74de6b | |||
0e60accf2a | |||
7d040d2a08 | |||
080c1d4567 | |||
f283f57432 | |||
497a26665c | |||
f0a2e714b3 | |||
63ec900af9 | |||
38f2f4c564 | |||
a39100cf1d | |||
fbfdbaf2eb | |||
f36785c26c | |||
10813996e8 | |||
e5ad6348b9 | |||
5148a4d7b5 | |||
2625dc5348 | |||
65d771dcaf | |||
c6ab67bffc | |||
f7371dca82 | |||
32c9146a09 | |||
a28c763b44 | |||
bfa75dc990 | |||
d3b0a4a525 | |||
141064d7ae | |||
eb515f4dc8 | |||
c1e48c0ff0 | |||
694f15dee3 | |||
3da0ee287c | |||
9ce9725211 | |||
237bd11bc5 | |||
61e1e9adb8 | |||
fa6c45b092 | |||
64ac46126b | |||
5bcda29658 | |||
04c3f6e53e | |||
89d20990e5 | |||
6e17fb8fe3 | |||
5a893d09d2 | |||
22754cf687 | |||
8d5d6de761 | |||
bed0995976 | |||
fcadf47a91 | |||
08974c22e4 | |||
2c3a503731 | |||
f9adf3616c | |||
4b7fc26bae | |||
60ffc08547 | |||
14795baf21 | |||
64c0c13e6e | |||
c8a9764987 | |||
d35d9e6452 | |||
4e4ef13734 | |||
bf63e348a2 | |||
3967d1caba | |||
4b106ac1c9 | |||
b1ca5b30cf | |||
78e0791a54 | |||
15a7a5a08c | |||
1ddfe6676d | |||
96ca64629d | |||
dc519f3eb7 | |||
9ebe44bc9c | |||
284726baec | |||
f82f1513e0 | |||
4d35ecc3bb | |||
1eecb1feaf | |||
c9f87df47f | |||
72aa0ebe6a | |||
4b742caddc | |||
2e2c24bec1 | |||
577327635c | |||
cbf76d165f | |||
4828c6a1ce | |||
395ee33c8a | |||
![]() |
f46e77fd56 | ||
7553a8c195 | |||
8f8b9b58f6 | |||
5cba64e30c | |||
727e9dd1bb | |||
c932edb578 | |||
![]() |
8c227adb8c | ||
2beb940365 | |||
893aac18c6 | |||
4a37269d0a | |||
9cc51d8ea2 | |||
2ad2236078 | |||
6621c02026 | |||
4eeeae0eda | |||
52d571e189 | |||
490b73ff22 | |||
9c15439c5c | |||
e43c5fa005 | |||
f25f1a6688 | |||
![]() |
63d0197f9b | ||
32a4403617 | |||
b49df09d89 | |||
5c6e333780 | |||
2b107beffd | |||
![]() |
bd401d9517 | ||
99ded01b64 | |||
61f86a7bee | |||
![]() |
4eb628e204 | ||
157067acbd | |||
3ead24d235 | |||
3346ab0348 | |||
c8ef04e726 | |||
da31052b45 | |||
a4dbb3bb88 | |||
225e3460d0 | |||
723f1e950b | |||
6c5e2ac7e6 | |||
![]() |
8c712eaa29 | ||
aac2db33df | |||
a1c1ec86d9 | |||
8f8e1dd8f7 | |||
![]() |
5cce2e1cfe | ||
67766f7715 | |||
75f518ccb9 | |||
83dee4a3b1 | |||
7b873b0662 | |||
112032f2ff | |||
8f8321bfdb | |||
5604a3d31d | |||
a8b9402c8f | |||
548b8f51c9 | |||
0627bc22f5 | |||
4542504162 | |||
![]() |
a91888206f | ||
0c28aaae7e | |||
a081a4817c | |||
d1eb762b57 | |||
5e01e71b59 | |||
70f74daa5a | |||
ba872f022c | |||
7d4c89e6da | |||
fb820c0638 | |||
53297e62eb | |||
3361be9b6b | |||
67ec0ef277 | |||
2f87db681a | |||
3f68a0aea5 | |||
035026f48a | |||
1073c6ae8e | |||
4a9b912b96 | |||
6566013c91 | |||
04c0a46570 | |||
4a0ff5cb2d | |||
a59fab461c | |||
176f0102ea | |||
988b3d7188 | |||
1179ce6f11 | |||
ffbd9448c8 | |||
d5f978b3cc | |||
d5974eb026 | |||
3ce594226e | |||
cb5ec7f743 | |||
40f32f406b | |||
5e0e175422 | |||
db5493ec7a | |||
e43b74d87a | |||
4b3f1b7540 | |||
f7e220edbd | |||
355b70c360 | |||
9e4229e0ad | |||
8b5d86dfba | |||
d57ce42dfa | |||
c14d34322b | |||
b7174c9320 | |||
e8b8ee7d28 | |||
5b93c6e6f3 | |||
d658ea1b20 | |||
31a83ee9f1 | |||
9b8be0bc0c | |||
cbf2fab9ea | |||
aa91a36864 | |||
bf13f1a263 | |||
26e440838f | |||
29c71b2c09 | |||
23b7f351aa | |||
c7222a234d | |||
3248be1fbf | |||
95687f9751 | |||
778afc8082 | |||
1070680a4b | |||
a8ea35da05 | |||
72454fafb0 | |||
![]() |
154af70f2b | ||
d4fde32b12 | |||
23e14259d2 | |||
2204687cbb | |||
5d502264da | |||
f9688d88ff | |||
a6a3989617 | |||
46c11c7b7d | |||
7bb910cd4e | |||
fcc2ca0089 | |||
b154aa8c06 | |||
5e6d878318 | |||
![]() |
625843d84d | ||
be7b943cd2 | |||
e414853e18 | |||
37807d93bd | |||
f312f890f1 | |||
606329d0f8 | |||
7013d55580 | |||
b15a056230 | |||
47faf618a6 | |||
a634bcbdb4 | |||
af9da0be43 | |||
f07cd77b48 | |||
be63ba315f | |||
d8094b62e2 | |||
c2dc51d827 | |||
4ff8744669 | |||
d5ed153760 | |||
0414ed1c48 | |||
8054372d22 | |||
![]() |
4b33667b93 | ||
88cc1a786b | |||
3ea11c1ac8 | |||
![]() |
beaed66f29 | ||
2f26683cdd | |||
5802d4531d | |||
26b5fb8f58 | |||
f7dedbc3ce | |||
133f79e449 | |||
5c633d3ba0 | |||
279cfdeef5 | |||
a6c2d02366 | |||
6a4a911fc3 | |||
db4d7004d8 | |||
d73e3f71d4 | |||
6d1c0260bb | |||
13ca9873c9 | |||
485293647f | |||
8dbce41706 | |||
0151af5054 | |||
8ba33a69c8 | |||
36da579d12 | |||
b2b1d8e290 | |||
2c35bcb356 | |||
2f0bdcb306 | |||
ba76f0c6a2 | |||
ee4fb23361 | |||
cb7afe5e41 | |||
bfa24aa945 | |||
25b7455eea | |||
cefe137e91 | |||
785b90d7ef | |||
6c2ce7a382 | |||
9a98fad2e0 | |||
9c9b145dab | |||
e5c13aebea | |||
c8d10d115c | |||
cdf5370159 | |||
179ad7dcba | |||
f651a470bf | |||
557d4370d9 | |||
a3e3ac03ff | |||
f0d475d3de | |||
abf7bd8d98 | |||
b6dc15278c | |||
dbea73a30f | |||
3b7794dab7 | |||
eaaeae4699 | |||
88fe896243 | |||
db8e6311f8 | |||
2e0426bbb1 | |||
459c5d2045 | |||
dfc0afb5b8 | |||
553ec988e7 | |||
7429113143 | |||
e2c04a8bf0 | |||
1be189f000 | |||
d2d1b19170 | |||
c24698a37e | |||
ba7e504448 | |||
dfc4de036e | |||
74f40a5217 | |||
86dbc9dd9a | |||
769c0bee9f | |||
33f388d7bf | |||
c8a62319cf | |||
21836250c0 | |||
b770964558 | |||
9ce8dfaf6a | |||
64dc1fd408 | |||
bae0f904ee | |||
5e2f3c0102 | |||
282315d991 | |||
b80345db0b | |||
00ff9da2ee | |||
be4b2e42c6 | |||
62ceada48f | |||
40938c3b4b | |||
2e7d72202f | |||
80b44133fc | |||
560dd932c2 | |||
abb266973d | |||
50cb62a3a0 | |||
3ef4b3e35c | |||
6bd53bb707 | |||
5362995fde | |||
f95241eb3e | |||
5223214199 | |||
d968a1ebb0 | |||
3138d39047 | |||
04178d7fe4 | |||
308c4fc234 | |||
984836781e | |||
4dd5b635e8 | |||
4c86271bd9 | |||
2103cf9355 | |||
b495395ee5 | |||
a9fdb70162 | |||
0f1c959b05 | |||
dd2525c362 | |||
923423e4cd | |||
c35a649a0a | |||
fc7752b53c | |||
06cdc35a68 | |||
3cbb066b83 | |||
db249b787f | |||
490f2aeb82 | |||
3a961d66ef | |||
61a330baca | |||
4b42c4bce4 | |||
d74e3c44cc | |||
09351c68e1 | |||
![]() |
7fb68cf83f | ||
ded2d8a777 | |||
04fab84fd1 | |||
33bff4caef | |||
c246499283 | |||
80a3f4fecf | |||
49d49d2c84 | |||
13e9c44ce5 | |||
887da1345c | |||
b0ef008741 | |||
25d6479ffb | |||
c6c7b9e0f7 | |||
b28aa182f3 | |||
8f1e015d75 | |||
ebad51fd0b | |||
0750e4c4c7 | |||
d30abdf3ec | |||
61d1477415 | |||
bc411ec06e | |||
507712db3f | |||
59b4ea5c69 | |||
22eb748162 | |||
6a8d0fd8de | |||
acd7f50308 | |||
591dc63eb1 | |||
63dc2e9b74 | |||
b6f0ad5d97 | |||
2db117aa6c | |||
84eeff0348 | |||
de54b031c6 | |||
5a6f9fd84d | |||
6d3757a3ce | |||
4b8430ae8a | |||
d79f679896 | |||
858e7b2f84 | |||
f364ab5a0f | |||
2d50e5feaa | |||
ab3290048c | |||
c576c77514 | |||
2ef68c2a32 | |||
7e64a020ed | |||
8d1d16bf0d | |||
![]() |
d0320947d3 | ||
f87d38b5f5 | |||
![]() |
2f49be5b20 | ||
![]() |
7c25f16f1a | ||
e556670b36 | |||
5918fcb5e7 | |||
11e7679d1c | |||
c86c9297dc | |||
b171fd7483 | |||
2d6458c64c | |||
383bd34111 | |||
e0cacb808c | |||
424c050a6f | |||
f23cf22125 | |||
20c233f3af | |||
3620e3e331 | |||
0297763afa | |||
c08e7e1dc0 | |||
cd2295f93e | |||
79aa9feee8 | |||
4d4da31ee5 | |||
d665095e0d | |||
f9cbb908a3 | |||
af346f9918 | |||
02175027f2 | |||
f4a260fb3c | |||
bdc41ca756 | |||
bcee57e74e | |||
99a386da9e | |||
fa021e3a44 | |||
cf38b933f3 | |||
e72d8b4711 | |||
8e1ae537dd | |||
9231150577 | |||
4f90c880a9 | |||
a4258d40a1 | |||
cc03689962 | |||
9fcc1a32df | |||
116439ed91 | |||
4eadc3801a | |||
858bf1adea | |||
9d078f2916 | |||
744aaa955f | |||
ee5936cf6b | |||
545308fd10 | |||
04814476c0 | |||
0a738280e1 | |||
abd38c00f1 | |||
815919b1fb | |||
dd897de061 | |||
f7957e2f7e | |||
32bc1eb677 | |||
b100bdca25 | |||
504370cafb | |||
65e1600cf3 | |||
067f70cff7 | |||
0f1c3958da | |||
91d2485c52 | |||
5711025765 | |||
fd6537a53a | |||
e640b4fb72 | |||
4f8b513c1a | |||
585d2f31a9 | |||
c2d6de8e20 | |||
5fdbb793ff | |||
642c8243e7 | |||
c6d8ac9fe2 | |||
a00b6d1271 | |||
0f6afddb04 | |||
30dab51c29 | |||
ad4980ce5e | |||
aaf772b724 | |||
539a61bce2 | |||
f2280661cb | |||
0609aee4db | |||
9f18e4f0eb | |||
2025730715 | |||
5f6e47e767 | |||
928be3013a | |||
016e75ad64 | |||
127b92de83 | |||
45ce901079 | |||
c1004b1b77 | |||
375d2dc855 | |||
fe9394741b | |||
14df7de916 | |||
9c97624fc9 | |||
0ba84b7124 | |||
a62b806d70 | |||
67943af47a | |||
5c829d2c4e | |||
e1ef451996 | |||
7a76b1a003 | |||
efee3be1d3 | |||
a550d913bc | |||
47b8bf591c | |||
be3a6d78e8 | |||
e2522b4a29 | |||
9245e1aeb8 | |||
05e26297bf | |||
e36cc29a69 | |||
8f1cdc1949 | |||
32b5fb351a | |||
8d084e8c8f | |||
a8705e99ee | |||
37474e50ce | |||
22e9f4f838 | |||
d5e300e14d | |||
26083d5de5 | |||
1519b6a23e | |||
0259864c15 | |||
409b3c9c9c | |||
1a7b7bb74e | |||
2d83108f93 | |||
7880f75e87 | |||
025955e549 | |||
d7a1b09f85 | |||
14c57b6c78 | |||
5e809c45ed | |||
4c60aae66c | |||
cc02f929f9 | |||
15d2ab6812 | |||
0d8a007c69 | |||
b4860de6f1 | |||
c03951da14 | |||
1f4915e290 | |||
4a763e1c68 | |||
29bb5f9a69 | |||
8cb1b35bee | |||
0e7d4a828a | |||
c0e3540898 | |||
247b869967 | |||
a9521c428e | |||
81c4c29504 | |||
471a011122 | |||
939fa6759c | |||
233de800e2 | |||
b36eb51d37 | |||
cd6129d1ff | |||
1f1dcdfd76 | |||
b15d9ecb6d | |||
9cfcddc8f4 | |||
9e53a97ddf | |||
77af624524 | |||
1dd428ff6d | |||
6feac1e940 | |||
a1b27d6424 | |||
d3a7f3fa29 | |||
e4b910a0aa | |||
bce5b6b241 | |||
7fff7beac1 | |||
9241f12e10 | |||
68f2066602 | |||
0106b94f9d | |||
15af15eb56 | |||
a613290775 | |||
dde740bcd7 | |||
24ddfe0c63 | |||
15969e8a30 | |||
4189a686b5 | |||
1a410fd798 | |||
ada2a3a0fc | |||
4f9ee695ef | |||
27d660ad20 | |||
8ac3c3d3ee | |||
60bdb7da48 | |||
9d8c1658a1 | |||
6359c36ba4 | |||
a9ae14c480 | |||
cdbac018a2 | |||
821e2ae37a | |||
f0b601ccf3 | |||
02ffed4052 | |||
3aa65574f5 | |||
dc1ca0c94f | |||
5e10392e9f | |||
4b2fadeaba | |||
8f36d260d3 | |||
02f58ac623 | |||
4c43fcf791 | |||
bc0411f687 | |||
1e4d99368b | |||
72f557d34e | |||
0fa7e4c853 | |||
9ce645e7d9 | |||
d4758badf6 | |||
502f6d538d | |||
a654512356 | |||
b86f199a98 | |||
527d049c5c | |||
7dabfb2048 | |||
50af4d208d | |||
230c272fe3 | |||
a1d80b9c56 | |||
faa10d1ced | |||
e64ecaea4a | |||
591caab731 | |||
480d9eab73 | |||
bcab08c50a | |||
6a8ff9ee4b | |||
7901faf335 | |||
96c2d67797 | |||
e99919f713 | |||
617131410c | |||
9ac0b4ff05 | |||
a2aa3eb2e5 | |||
69356b0b9b | |||
1b0214cb88 | |||
c47682d6ab | |||
c946a450ed | |||
dd9c53b312 | |||
6bde5381bb | |||
3dada2f8cf | |||
957b945a18 | |||
db62a80869 | |||
178f8400ee | |||
5ab4c6b7aa | |||
2040666fd1 | |||
805bb22f46 | |||
497d06d64d | |||
5f948fb77f | |||
b8f6941776 | |||
1a72c83355 | |||
fb7f06288d | |||
2cb134be2b | |||
55aa42ad6f | |||
832f54a1aa | |||
c68c32a409 | |||
6fa46ad315 | |||
c7684b456a | |||
aaa2f7f3ec | |||
202831fc4f | |||
c0276251d2 | |||
4268f1c8f2 | |||
5ecbd5c871 | |||
ff53b046f2 | |||
570313d519 | |||
56a5f17846 | |||
b16e924251 | |||
40fb21aafe | |||
927099ceb8 | |||
ec8fb6dbef | |||
4a26d70e1e | |||
2842b0e9c9 | |||
b4efe25119 | |||
52330e5349 | |||
a0b7d24a6f | |||
160236acaf | |||
9a19fd5811 | |||
ab8e709d67 | |||
516dbaeb73 | |||
cbe68f70a8 | |||
5b027bd6dd | |||
0334be9f7f | |||
101a1dddae | |||
da78dd78be | |||
653b67055b | |||
2b69665c14 | |||
c63afbbe6f | |||
bf8cd9011d | |||
221ef3c29f | |||
503484c978 | |||
fa1e6c5442 | |||
c729ce7e05 | |||
07d161bb38 | |||
2cca83caf1 | |||
d41f99ac57 | |||
839e24c0c3 | |||
4a92620d3e | |||
7803cb09f3 | |||
0cf8ee1c03 | |||
5f267ab9f3 | |||
a4c3b92294 | |||
99ef213dcb | |||
c900cd3bd8 | |||
21825c4359 | |||
53b05e4f06 | |||
e1afaa02bf | |||
8e4fdba19c | |||
e237424046 | |||
5488630047 | |||
95be98dd43 | |||
84dfec76eb | |||
640af5c274 | |||
88d8cb73af | |||
e6edc1b09d | |||
2f4e70702c | |||
a5159b5fba | |||
8f6a993769 | |||
d653500152 | |||
5533257c4d | |||
6dab4ce598 | |||
dcc281b74a | |||
58a9569628 | |||
4832538ad0 | |||
2854b93202 | |||
fe42ceb281 | |||
ff4a867dc0 | |||
a3bb1dca25 | |||
0b12e61040 | |||
87c27ef92f | |||
32f83a298c | |||
af069cd013 | |||
2307bd7174 | |||
0929821590 | |||
4735fdc280 | |||
faf4f29cc0 | |||
37f3843ab0 | |||
b90d849171 | |||
38a54f4e01 | |||
fe731686fb | |||
ccc5983e2b | |||
98153778b5 | |||
a2386b3e20 | |||
d165b1b266 | |||
b3d414cc21 | |||
13d8671a1a | |||
058e3f087e | |||
34abb614f1 | |||
69e41d473c | |||
42abfe4853 | |||
181e7f98b2 | |||
51d99ebf01 | |||
a318f8ee9e | |||
21462410ee | |||
6f2f80887b | |||
faaf0c719f | |||
e18a74849c | |||
f1976cbde7 | |||
fc3753b8f6 | |||
345b16601c | |||
![]() |
25ec0d97f9 | ||
cbffc7499e | |||
6dae643450 | |||
de6a69fc79 | |||
1b5ec32ed9 | |||
d0bd474375 | |||
ff0b24c4e2 | |||
3c0605c0ef | |||
059e0dafb4 | |||
31833d2dc8 | |||
3a40aed3d5 | |||
e7f495d8a0 | |||
0297f1fdd5 | |||
023ac217dd | |||
d87add8ebb | |||
eb464eed57 | |||
2e7c8f730c | |||
362b0239fe | |||
3906782406 | |||
e422e56db0 | |||
c779f26a74 | |||
7ae60703a2 | |||
55a44e4f30 | |||
8ddc3d148e | |||
82c90a44c2 | |||
ed4075cb34 | |||
d342f46682 | |||
14ee107b1f | |||
2ed1b67835 | |||
bdd515fee2 | |||
d871575be7 | |||
dbb9eba0fb |
669
CMakeLists.txt
669
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
19
GNUmakefile
19
GNUmakefile
@@ -52,6 +52,10 @@ ifneq "$(findstring debug, $(MAKECMDGOALS))" ""
|
||||
BUILD_DIR:=$(BUILD_DIR)_debug
|
||||
BUILD_TYPE:=Debug
|
||||
endif
|
||||
ifneq "$(findstring full, $(MAKECMDGOALS))" ""
|
||||
BUILD_DIR:=$(BUILD_DIR)_full
|
||||
BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/blender_full.cmake"
|
||||
endif
|
||||
ifneq "$(findstring lite, $(MAKECMDGOALS))" ""
|
||||
BUILD_DIR:=$(BUILD_DIR)_lite
|
||||
BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/blender_lite.cmake"
|
||||
@@ -129,6 +133,7 @@ all:
|
||||
@echo
|
||||
|
||||
debug: all
|
||||
full: all
|
||||
lite: all
|
||||
cycles: all
|
||||
headless: all
|
||||
@@ -147,6 +152,7 @@ help:
|
||||
@echo ""
|
||||
@echo "Convenience targets provided for building blender, (multiple at once can be used)"
|
||||
@echo " * debug - build a debug binary"
|
||||
@echo " * full - enable all supported dependencies & options"
|
||||
@echo " * lite - disable non essential features for a smaller binary and faster build"
|
||||
@echo " * headless - build without an interface (renderfarm or server automation)"
|
||||
@echo " * cycles - build Cycles standalone only, without Blender"
|
||||
@@ -201,6 +207,9 @@ help:
|
||||
@echo " * doc_dna - generate blender file format reference"
|
||||
@echo " * doc_man - generate manpage"
|
||||
@echo ""
|
||||
@echo "Information"
|
||||
@echo " * help - this help message"
|
||||
@echo " * help_features - show a list of optional features when building"
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Packages
|
||||
@@ -397,6 +406,16 @@ doc_dna:
|
||||
doc_man:
|
||||
python3 doc/manpage/blender.1.py "$(BUILD_DIR)/bin/blender"
|
||||
|
||||
help_features:
|
||||
@python3 -c \
|
||||
"import re; \
|
||||
print('\n'.join([ \
|
||||
w for l in open('"$(BLENDER_DIR)"/CMakeLists.txt', 'r').readlines() \
|
||||
if not l.lstrip().startswith('#') \
|
||||
for w in (re.sub(\
|
||||
r'.*\boption\s*\(\s*(WITH_[a-zA-Z0-9_]+)\s+(\".*\")\s*.*', r'\g<1> - \g<2>', l).strip('() \n'),) \
|
||||
if w.startswith('WITH_')]))" | uniq
|
||||
|
||||
|
||||
clean:
|
||||
$(MAKE) -C "$(BUILD_DIR)" clean
|
||||
|
53
SConstruct
53
SConstruct
@@ -218,6 +218,8 @@ else:
|
||||
if not env['BF_FANCY']:
|
||||
B.bc.disable()
|
||||
|
||||
if env['WITH_BF_SDL_DYNLOAD']:
|
||||
env['BF_SDL_INC'] = '#extern/sdlew/include/SDL2'
|
||||
|
||||
# remove install dir so old and new files are not mixed.
|
||||
# NOTE: only do the scripts directory for now, otherwise is too disruptive for developers
|
||||
@@ -420,6 +422,9 @@ if env['OURPLATFORM']=='darwin':
|
||||
env.Append(LINKFLAGS=['-F/Library/Frameworks','-Xlinker','-weak_framework','-Xlinker','Jackmp'])
|
||||
print B.bc.OKGREEN + "Using Jack"
|
||||
|
||||
if env['WITH_BF_SDL']:
|
||||
env.Append(LINKFLAGS=['-lazy_framework','ForceFeedback'])
|
||||
|
||||
if env['WITH_BF_QUICKTIME'] == 1:
|
||||
env['PLATFORM_LINKFLAGS'] = env['PLATFORM_LINKFLAGS']+['-framework','QTKit']
|
||||
|
||||
@@ -526,6 +531,49 @@ env['CPPFLAGS'].append('-DWITH_OPENNL')
|
||||
if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'):
|
||||
env['CPPFLAGS'].append('-DHAVE_STDBOOL_H')
|
||||
|
||||
# OpenGL
|
||||
|
||||
if env['WITH_BF_GL_PROFILE_COMPAT']:
|
||||
env['BF_GL_DEFINITIONS'].append('WITH_GL_PROFILE_COMPAT')
|
||||
|
||||
if env['WITH_BF_GL_PROFILE_CORE']:
|
||||
env['BF_GL_DEFINITIONS'].append('WITH_GL_PROFILE_CORE')
|
||||
|
||||
if env['WITH_BF_GL_PROFILE_ES20']:
|
||||
env['BF_GL_DEFINITIONS'].append('WITH_GL_PROFILE_ES20')
|
||||
|
||||
if env['WITH_BF_GL_EGL']:
|
||||
env['BF_GL_DEFINITIONS'].append('WITH_EGL')
|
||||
|
||||
# GLEW
|
||||
|
||||
if env['WITH_BF_GLEW_MX']:
|
||||
env['BF_GL_DEFINITIONS'].append('WITH_GLEW_MX')
|
||||
|
||||
if env['WITH_BF_GLEW_ES']:
|
||||
env['BF_GLEW_INC'] = '#extern/glew-es/include'
|
||||
|
||||
env['BF_GL_DEFINITIONS'] += ['GLEW_STATIC', 'WITH_GLEW_ES']
|
||||
|
||||
if not env['WITH_BF_GL_PROFILE_ES20']:
|
||||
# No ES functions are needed
|
||||
env['BF_GL_DEFINITIONS'].append('GLEW_NO_ES')
|
||||
elif not (env['WITH_BF_GL_PROFILE_CORE'] or env['WITH_BF_GL_PROFILE_COMPAT']):
|
||||
# ES is enabled, but the other functions are all disabled
|
||||
env['BF_GL_DEFINITIONS'].append('GLEW_ES_ONLY')
|
||||
|
||||
if env['WITH_BF_GL_PROFILE_ES20']:
|
||||
if env['WITH_BF_GL_EGL']:
|
||||
env['BF_GL_DEFINITIONS'].append('GLEW_USE_LIB_ES20')
|
||||
|
||||
if env['WITH_BF_GL_EGL']:
|
||||
env['BF_GL_DEFINITIONS'].append('GLEW_INC_EGL')
|
||||
|
||||
else:
|
||||
env['BF_GLEW_INC'] = '#extern/glew/include'
|
||||
|
||||
env['BF_GL_DEFINITIONS'].append('GLEW_STATIC')
|
||||
|
||||
# lastly we check for root_build_dir ( we should not do before, otherwise we might do wrong builddir
|
||||
B.root_build_dir = env['BF_BUILDDIR']
|
||||
B.doc_build_dir = os.path.join(env['BF_INSTALLDIR'], 'doc')
|
||||
@@ -709,6 +757,7 @@ if B.targets != ['cudakernels']:
|
||||
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_frag.glsl")
|
||||
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_vert.glsl")
|
||||
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vertex.glsl")
|
||||
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vertex_world.glsl")
|
||||
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vsm_store_frag.glsl")
|
||||
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vsm_store_vert.glsl")
|
||||
data_to_c_simple("intern/opencolorio/gpu_shader_display_transform.glsl")
|
||||
@@ -812,9 +861,11 @@ if B.targets != ['cudakernels']:
|
||||
from FindUnorderedMap import FindUnorderedMap
|
||||
|
||||
conf = Configure(env)
|
||||
old_linkflags = conf.env['LINKFLAGS']
|
||||
conf.env.Append(LINKFLAGS=env['PLATFORM_LINKFLAGS'])
|
||||
FindSharedPtr(conf)
|
||||
FindUnorderedMap(conf)
|
||||
conf.env['LINKFLAGS'] = old_linkflags
|
||||
env = conf.Finish()
|
||||
|
||||
# End of auto configuration
|
||||
@@ -1137,7 +1188,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'):
|
||||
dllsources += ['${BF_PTHREADS_LIBPATH}/${BF_PTHREADS_LIB}.dll']
|
||||
|
||||
if env['WITH_BF_SDL']:
|
||||
dllsources.append('${BF_SDL_LIBPATH}/SDL.dll')
|
||||
dllsources.append('${BF_SDL_LIBPATH}/SDL2.dll')
|
||||
|
||||
if env['WITH_BF_PYTHON']:
|
||||
if env['BF_DEBUG']:
|
||||
|
@@ -29,7 +29,7 @@ getopt \
|
||||
ver-ocio:,ver-oiio:,ver-llvm:,ver-osl:,\
|
||||
force-all,force-python,force-numpy,force-boost,force-ocio,force-oiio,force-llvm,force-osl,force-opencollada,\
|
||||
force-ffmpeg,\
|
||||
skip-python,skip-numpy,skip-boost,skip-ocio,skip-oiio,skip-llvm,skip-osl,skip-ffmpeg,skip-opencollada,\
|
||||
skip-python,skip-numpy,skip-boost,skip-ocio,skip-openexr,skip-oiio,skip-llvm,skip-osl,skip-ffmpeg,skip-opencollada,\
|
||||
required-numpy: \
|
||||
-- "$@" \
|
||||
)
|
||||
@@ -40,7 +40,7 @@ SRC="$HOME/src/blender-deps"
|
||||
INST="/opt/lib"
|
||||
TMP="/tmp"
|
||||
CWD=$PWD
|
||||
INFO_PATH = CWD
|
||||
INFO_PATH=$CWD
|
||||
|
||||
# Do not install some optional, potentially conflicting libs by default...
|
||||
WITH_ALL=false
|
||||
@@ -83,7 +83,7 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS:
|
||||
-t n, --threads=n
|
||||
Use a specific number of threads when building the libraries (auto-detected as '\$THREADS').
|
||||
|
||||
--no_sudo
|
||||
--no-sudo
|
||||
Disable use of sudo (this script won't be able to do much though, will just print needed packages...).
|
||||
|
||||
--with-all
|
||||
@@ -471,11 +471,12 @@ while true; do
|
||||
esac
|
||||
done
|
||||
|
||||
if $WITH_ALL; then
|
||||
if [ $WITH_ALL == true -a $OPENCOLLADA_SKIP == false ]; then
|
||||
WITH_OPENCOLLADA=true
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# This has to be done here, because user might force some versions...
|
||||
PYTHON_SOURCE=( "http://python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz" )
|
||||
NUMPY_SOURCE=( "http://sourceforge.net/projects/numpy/files/NumPy/$NUMPY_VERSION/numpy-$NUMPY_VERSION.tar.gz" )
|
||||
@@ -497,8 +498,12 @@ LLVM_SOURCE=( "http://llvm.org/releases/$LLVM_VERSION/llvm-$LLVM_VERSION.src.tar
|
||||
LLVM_CLANG_SOURCE=( "http://llvm.org/releases/$LLVM_VERSION/clang-$LLVM_VERSION.src.tar.gz" "http://llvm.org/releases/$LLVM_VERSION/cfe-$LLVM_VERSION.src.tar.gz" )
|
||||
#OSL_SOURCE=( "https://github.com/imageworks/OpenShadingLanguage/archive/Release-$OSL_VERSION.tar.gz" )
|
||||
#OSL_SOURCE=( "https://github.com/imageworks/OpenShadingLanguage.git" )
|
||||
OSL_SOURCE=( "https://github.com/mont29/OpenShadingLanguage.git" )
|
||||
OSL_REPO_UID="85179714e1bc69cd25ecb6bb711c1a156685d395"
|
||||
#OSL_SOURCE=( "https://github.com/mont29/OpenShadingLanguage.git" )
|
||||
#OSL_REPO_UID="85179714e1bc69cd25ecb6bb711c1a156685d395"
|
||||
#OSL_REPO_BRANCH="master"
|
||||
OSL_SOURCE=( "https://github.com/Nazg-Gul/OpenShadingLanguage.git" )
|
||||
OSL_REPO_UID="22ee5ea298fd215430dfbd160b5aefd507f06db0"
|
||||
OSL_REPO_BRANCH="blender-fixes"
|
||||
|
||||
OPENCOLLADA_SOURCE=( "https://github.com/KhronosGroup/OpenCOLLADA.git" )
|
||||
OPENCOLLADA_REPO_UID="18da7f4109a8eafaa290a33f5550501cc4c8bae8"
|
||||
@@ -1404,12 +1409,13 @@ clean_OSL() {
|
||||
|
||||
compile_OSL() {
|
||||
# To be changed each time we make edits that would modify the compiled result!
|
||||
osl_magic=15
|
||||
osl_magic=16
|
||||
_init_osl
|
||||
|
||||
# Clean install if needed!
|
||||
magic_compile_check osl-$OSL_VERSION $osl_magic
|
||||
if [ $? -eq 1 -o $OSL_FORCE_REBUILD == true ]; then
|
||||
rm -Rf $_src # XXX Radical, but not easy to change remote repo fully automatically
|
||||
clean_OSL
|
||||
fi
|
||||
|
||||
@@ -1433,10 +1439,10 @@ compile_OSL() {
|
||||
|
||||
cd $_src
|
||||
|
||||
git remote set-url origin $OSL_SOURCE
|
||||
git remote set-url origin ${OSL_SOURCE[0]}
|
||||
|
||||
# XXX For now, always update from latest repo...
|
||||
git pull -X theirs origin master
|
||||
git pull --no-edit -X theirs origin $OSL_GIT_BRANCH
|
||||
|
||||
# Stick to same rev as windows' libs...
|
||||
git checkout $OSL_REPO_UID
|
||||
@@ -1795,7 +1801,7 @@ install_DEB() {
|
||||
_packages="gawk cmake cmake-curses-gui scons build-essential libjpeg-dev libpng-dev \
|
||||
libfreetype6-dev libx11-dev libxi-dev wget libsqlite3-dev libbz2-dev \
|
||||
libncurses5-dev libssl-dev liblzma-dev libreadline-dev $OPENJPEG_DEV \
|
||||
libopenal-dev libglew-dev yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV \
|
||||
libopenal-dev libglew-dev libglewmx-dev yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV \
|
||||
libsdl1.2-dev libfftw3-dev patch bzip2 libxml2-dev libtinyxml-dev"
|
||||
|
||||
OPENJPEG_USE=true
|
||||
|
@@ -2,4 +2,4 @@ BF_BUILDDIR = '../blender-build/linux-glibc211-i686'
|
||||
BF_INSTALLDIR = '../blender-install/linux-glibc211-i686'
|
||||
BF_NUMJOBS = 1
|
||||
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||
|
@@ -2,4 +2,4 @@ BF_BUILDDIR = '../blender-build/linux-glibc211-x86_64'
|
||||
BF_INSTALLDIR = '../blender-install/linux-glibc211-x86_64'
|
||||
BF_NUMJOBS = 1
|
||||
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||
|
@@ -49,7 +49,7 @@ BF_CXX_LIB_STATIC = '/usr/lib/gcc/i486-linux-gnu/4.7.1/libstdc++.a'
|
||||
WITH_BF_OPENAL = True
|
||||
WITH_BF_STATICOPENAL = True
|
||||
BF_OPENAL = '/opt/lib/openal'
|
||||
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a'
|
||||
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a /opt/lib/openal/lib/libcommon.a'
|
||||
|
||||
WITH_BF_GETTEXT_STATIC = True
|
||||
|
||||
@@ -79,6 +79,8 @@ WITH_BF_STATICZLIB = True
|
||||
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
|
||||
|
||||
WITH_BF_SDL = True
|
||||
WITH_BF_SDL_DYNLOAD = True
|
||||
|
||||
WITH_BF_OGG = True
|
||||
|
||||
WITH_BF_OPENMP = True
|
||||
|
@@ -49,7 +49,7 @@ BF_CXX_LIB_STATIC = '/usr/lib/gcc/x86_64-linux-gnu/4.7.1/libstdc++.a'
|
||||
WITH_BF_OPENAL = True
|
||||
WITH_BF_STATICOPENAL = True
|
||||
BF_OPENAL = '/opt/lib/openal'
|
||||
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a'
|
||||
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a /opt/lib/openal/lib/libcommon.a'
|
||||
|
||||
WITH_BF_GETTEXT_STATIC = True
|
||||
|
||||
@@ -79,6 +79,8 @@ WITH_BF_STATICZLIB = True
|
||||
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
|
||||
|
||||
WITH_BF_SDL = True
|
||||
WITH_BF_SDL_DYNLOAD = True
|
||||
|
||||
WITH_BF_OGG = True
|
||||
|
||||
WITH_BF_OPENMP = True
|
||||
|
@@ -34,7 +34,7 @@ BF_CXX_LIB_STATIC = '/usr/lib/gcc/i486-linux-gnu/4.7.1/libstdc++.a'
|
||||
WITH_BF_OPENAL = True
|
||||
WITH_BF_STATICOPENAL = True
|
||||
BF_OPENAL = '/opt/lib/openal'
|
||||
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a'
|
||||
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a /opt/lib/openal/lib/libcommon.a'
|
||||
|
||||
WITH_BF_GETTEXT_STATIC = True
|
||||
|
||||
@@ -64,6 +64,8 @@ WITH_BF_STATICZLIB = True
|
||||
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
|
||||
|
||||
WITH_BF_SDL = True
|
||||
WITH_BF_SDL_DYNLOAD = True
|
||||
|
||||
WITH_BF_OGG = False
|
||||
|
||||
WITH_BF_OPENMP = True
|
||||
|
@@ -34,7 +34,7 @@ BF_CXX_LIB_STATIC = '/usr/lib/gcc/x86_64-linux-gnu/4.7.1/libstdc++.a'
|
||||
WITH_BF_OPENAL = True
|
||||
WITH_BF_STATICOPENAL = True
|
||||
BF_OPENAL = '/opt/lib/openal'
|
||||
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a'
|
||||
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a /opt/lib/openal/lib/libcommon.a'
|
||||
|
||||
WITH_BF_GETTEXT_STATIC = True
|
||||
|
||||
@@ -64,6 +64,8 @@ WITH_BF_STATICZLIB = True
|
||||
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
|
||||
|
||||
WITH_BF_SDL = True
|
||||
WITH_BF_SDL_DYNLOAD = True
|
||||
|
||||
WITH_BF_OGG = False
|
||||
|
||||
WITH_BF_OPENMP = True
|
||||
|
@@ -3,6 +3,12 @@
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
# List of the branches being built automatically overnight
|
||||
NIGHT_SCHEDULE_BRANCHES=[None, "gooseberry"]
|
||||
|
||||
# List of the branches available for force build
|
||||
FORCE_SCHEDULE_BRANCHES=["master", "gooseberry", "experimental-build"]
|
||||
|
||||
"""
|
||||
Stock Twisted directory lister doesn't provide any information about last file
|
||||
modification time, we hack the class a bit in order to have such functionaliity
|
||||
@@ -11,7 +17,6 @@ modification time, we hack the class a bit in order to have such functionaliity
|
||||
|
||||
from buildbot.status.web.base import DirectoryLister
|
||||
|
||||
|
||||
def get_files_and_directories(self, directory):
|
||||
from twisted.web.static import (getTypeAndEncoding,
|
||||
formatFileSize)
|
||||
@@ -113,7 +118,7 @@ def schedule_force_build(name):
|
||||
codebases=[forcesched.CodebaseParameter(
|
||||
codebase="blender",
|
||||
branch=forcesched.ChoiceStringParameter(
|
||||
name="branch", choices=["master", "testbuild"], default="master"),
|
||||
name="branch", choices=FORCE_SCHEDULE_BRANCHES, default="master"),
|
||||
# Do not hide revision, can be handy!
|
||||
repository=forcesched.FixedParameter(name="repository", default="", hide=True),
|
||||
project=forcesched.FixedParameter(name="project", default="", hide=True)),
|
||||
@@ -127,18 +132,22 @@ def schedule_force_build(name):
|
||||
|
||||
|
||||
def schedule_build(name, hour, minute=0):
|
||||
c['schedulers'].append(timed.Nightly(name='nightly ' + name,
|
||||
codebases={
|
||||
"blender": {"repository": ""},
|
||||
"blender-translations": {"repository": ""},
|
||||
"blender-addons": {"repository": ""},
|
||||
"blender-addons-contrib": {"repository": ""},
|
||||
"scons": {"repository": ""},
|
||||
"lib svn": {"repository": ""}},
|
||||
branch=None,
|
||||
builderNames=[name],
|
||||
hour=hour,
|
||||
minute=minute))
|
||||
for current_branch in NIGHT_SCHEDULE_BRANCHES:
|
||||
scheduler_name = "nightly " + name
|
||||
if current_branch:
|
||||
scheduler_name += ' ' + current_branch
|
||||
c['schedulers'].append(timed.Nightly(name=scheduler_name,
|
||||
codebases={
|
||||
"blender": {"repository": ""},
|
||||
"blender-translations": {"repository": "", "branch": "master"},
|
||||
"blender-addons": {"repository": "", "branch": "master"},
|
||||
"blender-addons-contrib": {"repository": "", "branch": "master"},
|
||||
"scons": {"repository": "", "branch": "master"},
|
||||
"lib svn": {"repository": "", "branch": "master"}},
|
||||
branch=current_branch,
|
||||
builderNames=[name],
|
||||
hour=hour,
|
||||
minute=minute))
|
||||
|
||||
|
||||
# BUILDERS
|
||||
@@ -295,6 +304,8 @@ add_builder(c, 'linux_glibc211_i386_scons', '', generic_builder, hour=1)
|
||||
add_builder(c, 'linux_glibc211_x86_64_scons', '', generic_builder, hour=2)
|
||||
add_builder(c, 'win32_scons_vc2013', 'windows_vc12', generic_builder, hour=1)
|
||||
add_builder(c, 'win64_scons_vc2013', 'win64_vc12', generic_builder, hour=2)
|
||||
add_builder(c, 'win32_cmake_vc2013', 'windows_vc12', generic_builder, hour=3)
|
||||
add_builder(c, 'win64_cmake_vc2013', 'win64_vc12', generic_builder, hour=4)
|
||||
#add_builder(c, 'mingw_win32_scons', 'mingw32', generic_builder, hour=4)
|
||||
add_builder(c, 'mingw_win64_scons', 'mingw64', generic_builder, hour=3)
|
||||
#add_builder(c, 'freebsd_i386_cmake', '', generic_builder, hour=1)
|
||||
|
@@ -30,12 +30,12 @@ import zipfile
|
||||
# extension stripping
|
||||
def strip_extension(filename):
|
||||
extensions = '.zip', '.tar', '.bz2', '.gz', '.tgz', '.tbz', '.exe'
|
||||
filename_noext, ext = os.path.splitext(filename)
|
||||
if ext in extensions:
|
||||
return strip_extension(filename_noext) # may have .tar.bz2
|
||||
else:
|
||||
return filename
|
||||
|
||||
for ext in extensions:
|
||||
if filename.endswith(ext):
|
||||
filename = filename[:-len(ext)]
|
||||
|
||||
return filename
|
||||
|
||||
# extract platform from package name
|
||||
def get_platform(filename):
|
||||
@@ -48,12 +48,11 @@ def get_platform(filename):
|
||||
tokens = filename.split("-")
|
||||
platforms = ('osx', 'mac', 'bsd',
|
||||
'win', 'linux', 'source',
|
||||
'solaris',
|
||||
'mingw')
|
||||
'irix', 'solaris', 'mingw')
|
||||
platform_tokens = []
|
||||
found = False
|
||||
|
||||
for token in tokens:
|
||||
for i, token in enumerate(tokens):
|
||||
if not found:
|
||||
for platform in platforms:
|
||||
if platform in token.lower():
|
||||
@@ -65,20 +64,19 @@ def get_platform(filename):
|
||||
|
||||
return '-'.join(platform_tokens)
|
||||
|
||||
|
||||
def get_branch(filename):
|
||||
tokens = filename.split("-")
|
||||
branch = ""
|
||||
|
||||
|
||||
for token in tokens:
|
||||
if token == "blender":
|
||||
return branch
|
||||
|
||||
if branch == "":
|
||||
branch = token
|
||||
else:
|
||||
branch = branch + "-" + token
|
||||
|
||||
if token == "blender":
|
||||
return branch
|
||||
|
||||
return ""
|
||||
|
||||
# get filename
|
||||
@@ -112,11 +110,16 @@ branch = get_branch(packagename)
|
||||
|
||||
if platform == '':
|
||||
sys.stderr.write('Failed to detect platform ' +
|
||||
'from package: %r\n' % packagename)
|
||||
'from package: %r\n' % packagename)
|
||||
sys.exit(1)
|
||||
|
||||
# extract
|
||||
directory = 'public_html/download'
|
||||
if not branch or branch == 'master':
|
||||
directory = 'public_html/download'
|
||||
elif branch == 'experimental-build':
|
||||
directory = 'public_html/download/experimental'
|
||||
else:
|
||||
directory = 'public_html/download'
|
||||
|
||||
try:
|
||||
zf = z.open(package)
|
||||
@@ -126,8 +129,6 @@ try:
|
||||
|
||||
zf.close()
|
||||
z.close()
|
||||
|
||||
os.remove(filename)
|
||||
except Exception, ex:
|
||||
sys.stderr.write('Failed to unzip package: %s\n' % str(ex))
|
||||
sys.exit(1)
|
||||
|
@@ -33,7 +33,7 @@ builder = sys.argv[1]
|
||||
# we run from build/ directory
|
||||
blender_dir = '../blender.git'
|
||||
|
||||
if builder.find('cmake') != -1:
|
||||
if 'cmake' in builder:
|
||||
# cmake
|
||||
|
||||
# set build options
|
||||
@@ -46,11 +46,21 @@ if builder.find('cmake') != -1:
|
||||
elif builder.endswith('mac_ppc_cmake'):
|
||||
cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=ppc')
|
||||
|
||||
if 'win64' in builder:
|
||||
cmake_options.append(['-G','"Visual Studio 12 2013 Win64"'])
|
||||
elif 'win32' in builder:
|
||||
cmake_options.append(['-G','"Visual Studio 12 2013"'])
|
||||
|
||||
cmake_options.append("-C../blender.git/build_files/cmake/config/blender_full.cmake")
|
||||
cmake_options.append("-DWITH_CYCLES_CUDA_BINARIES=1")
|
||||
# configure and make
|
||||
retcode = subprocess.call(['cmake', blender_dir] + cmake_options)
|
||||
if retcode != 0:
|
||||
sys.exit(retcode)
|
||||
retcode = subprocess.call(['make', '-s', '-j4', 'install'])
|
||||
if 'win' in builder:
|
||||
retcode = subprocess.call(['msbuild', 'INSTALL.vcxproj', '/p:Configuration=Release'])
|
||||
else:
|
||||
retcode = subprocess.call(['make', '-s', '-j4', 'install'])
|
||||
sys.exit(retcode)
|
||||
else:
|
||||
python_bin = 'python'
|
||||
|
@@ -115,6 +115,28 @@ if builder.find('scons') != -1:
|
||||
|
||||
retcode = subprocess.call([python_bin, 'scons/scons.py'] + scons_options)
|
||||
sys.exit(retcode)
|
||||
else:
|
||||
#cmake
|
||||
if 'win' in builder:
|
||||
files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.zip')]
|
||||
for f in files:
|
||||
os.remove(f)
|
||||
retcode = subprocess.call(['cpack', '-G','ZIP'])
|
||||
result_file = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.zip')][0]
|
||||
os.rename(result_file, "{}.zip".format(builder))
|
||||
# create zip file
|
||||
try:
|
||||
upload_zip = "buildbot_upload.zip"
|
||||
if os.path.exists(upload_zip):
|
||||
os.remove(upload_zip)
|
||||
z = zipfile.ZipFile(upload_zip, "w", compression=zipfile.ZIP_STORED)
|
||||
z.write("{}.zip".format(builder))
|
||||
z.close()
|
||||
sys.exit(retcode)
|
||||
except Exception, ex:
|
||||
sys.stderr.write('Create buildbot_upload.zip failed' + str(ex) + '\n')
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
# clean release directory if it already exists
|
||||
release_dir = 'release'
|
||||
|
@@ -75,3 +75,5 @@ MARK_AS_ADVANCED(
|
||||
GLEW_LIBRARY
|
||||
GLEW_MX_LIBRARY
|
||||
)
|
||||
|
||||
UNSET(_glew_SEARCH_DIRS)
|
||||
|
@@ -140,3 +140,8 @@ IF(OPENCOLLADA_FOUND)
|
||||
SET(OPENCOLLADA_LIBRARIES ${_opencollada_LIBRARIES})
|
||||
SET(OPENCOLLADA_INCLUDE_DIRS ${_opencollada_INCLUDES})
|
||||
ENDIF(OPENCOLLADA_FOUND)
|
||||
|
||||
UNSET(COMPONENT)
|
||||
UNSET(UPPERCOMPONENT)
|
||||
UNSET(_opencollada_LIBRARIES)
|
||||
UNSET(_opencollada_INCLUDES)
|
||||
|
@@ -63,11 +63,12 @@ FOREACH(COMPONENT ${_opencolorio_FIND_COMPONENTS})
|
||||
PATH_SUFFIXES
|
||||
lib64 lib
|
||||
)
|
||||
if(OPENCOLORIO_${UPPERCOMPONENT}_LIBRARY)
|
||||
IF(OPENCOLORIO_${UPPERCOMPONENT}_LIBRARY)
|
||||
LIST(APPEND _opencolorio_LIBRARIES "${OPENCOLORIO_${UPPERCOMPONENT}_LIBRARY}")
|
||||
endif()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set OPENCOLORIO_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
@@ -82,5 +83,13 @@ ENDIF(OPENCOLORIO_FOUND)
|
||||
MARK_AS_ADVANCED(
|
||||
OPENCOLORIO_INCLUDE_DIR
|
||||
OPENCOLORIO_LIBRARY
|
||||
OPENCOLORIO_OPENCOLORIO_LIBRARY
|
||||
OPENCOLORIO_TINYXML_LIBRARY
|
||||
OPENCOLORIO_YAML-CPP_LIBRARY
|
||||
)
|
||||
|
||||
UNSET(COMPONENT)
|
||||
UNSET(UPPERCOMPONENT)
|
||||
UNSET(_opencolorio_FIND_COMPONENTS)
|
||||
UNSET(_opencolorio_LIBRARIES)
|
||||
UNSET(_opencolorio_SEARCH_DIRS)
|
||||
|
@@ -137,3 +137,9 @@ FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS})
|
||||
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
||||
MARK_AS_ADVANCED(OPENEXR_${UPPERCOMPONENT}_LIBRARY)
|
||||
ENDFOREACH()
|
||||
|
||||
UNSET(COMPONENT)
|
||||
UNSET(UPPERCOMPONENT)
|
||||
UNSET(_openexr_FIND_COMPONENTS)
|
||||
UNSET(_openexr_LIBRARIES)
|
||||
UNSET(_openexr_SEARCH_DIRS)
|
||||
|
77
build_files/cmake/Modules/FindOpenGLES.cmake
Normal file
77
build_files/cmake/Modules/FindOpenGLES.cmake
Normal file
@@ -0,0 +1,77 @@
|
||||
# - Try to find OpenGLES
|
||||
# Once done this will define
|
||||
#
|
||||
# OPENGLES_FOUND - system has OpenGLES and EGL
|
||||
# OPENGL_EGL_FOUND - system has EGL
|
||||
# OPENGLES_INCLUDE_DIR - the GLES include directory
|
||||
# OPENGLES_LIBRARY - the GLES library
|
||||
# OPENGLES_EGL_INCLUDE_DIR - the EGL include directory
|
||||
# OPENGLES_EGL_LIBRARY - the EGL library
|
||||
# OPENGLES_LIBRARIES - all libraries needed for OpenGLES
|
||||
# OPENGLES_INCLUDES - all includes needed for OpenGLES
|
||||
|
||||
# If OPENGLES_ROOT_DIR was defined in the environment, use it.
|
||||
IF(NOT OPENGLES_ROOT_DIR AND NOT $ENV{OPENGLES_ROOT_DIR} STREQUAL "")
|
||||
SET(OPENGLES_ROOT_DIR $ENV{OPENGLES_ROOT_DIR})
|
||||
ENDIF()
|
||||
|
||||
SET(_opengles_SEARCH_DIRS
|
||||
${OPENGLES_ROOT_DIR}
|
||||
/usr/local
|
||||
)
|
||||
|
||||
FIND_PATH(OPENGLES_INCLUDE_DIR
|
||||
NAMES
|
||||
GLES2/gl2.h
|
||||
HINTS
|
||||
${_opengles_SEARCH_DIRS}
|
||||
)
|
||||
|
||||
FIND_LIBRARY(OPENGLES_LIBRARY
|
||||
NAMES
|
||||
GLESv2
|
||||
PATHS
|
||||
${_opengles_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
lib64 lib
|
||||
)
|
||||
|
||||
FIND_PATH(OPENGLES_EGL_INCLUDE_DIR
|
||||
NAMES
|
||||
EGL/egl.h
|
||||
HINTS
|
||||
${_opengles_SEARCH_DIRS}
|
||||
)
|
||||
|
||||
FIND_LIBRARY(OPENGLES_EGL_LIBRARY
|
||||
NAMES
|
||||
EGL
|
||||
HINTS
|
||||
${_opengles_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
lib64 lib
|
||||
)
|
||||
|
||||
IF(OPENGLES_EGL_LIBRARY AND OPENGLES_EGL_INCLUDE_DIR)
|
||||
SET(OPENGL_EGL_FOUND "YES")
|
||||
ELSE()
|
||||
SET(OPENGL_EGL_FOUND "NO")
|
||||
ENDIF()
|
||||
|
||||
IF(OPENGLES_LIBRARY AND OPENGLES_INCLUDE_DIR AND
|
||||
OPENGLES_EGL_LIBRARY AND OPENGLES_EGL_INCLUDE_DIR)
|
||||
SET(OPENGLES_LIBRARIES ${OPENGLES_LIBRARY} ${OPENGLES_LIBRARIES}
|
||||
${OPENGLES_EGL_LIBRARY})
|
||||
SET(OPENGLES_INCLUDES ${OPENGLES_INCLUDE_DIR} ${OPENGLES_EGL_INCLUDE_DIR})
|
||||
SET(OPENGLES_FOUND "YES")
|
||||
ELSE()
|
||||
SET(OPENGLES_FOUND "NO")
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
OPENGLES_EGL_INCLUDE_DIR
|
||||
OPENGLES_EGL_LIBRARY
|
||||
OPENGLES_INCLUDE_DIR
|
||||
)
|
||||
|
||||
UNSET(_opengles_SEARCH_DIRS)
|
@@ -69,3 +69,5 @@ MARK_AS_ADVANCED(
|
||||
OPENIMAGEIO_INCLUDE_DIR
|
||||
OPENIMAGEIO_LIBRARY
|
||||
)
|
||||
|
||||
UNSET(_openimageio_SEARCH_DIRS)
|
||||
|
@@ -69,3 +69,5 @@ MARK_AS_ADVANCED(
|
||||
OPENJPEG_INCLUDE_DIR
|
||||
OPENJPEG_LIBRARY
|
||||
)
|
||||
|
||||
UNSET(_openjpeg_SEARCH_DIRS)
|
||||
|
@@ -146,6 +146,14 @@ file(WRITE buildinfo.h.txt
|
||||
"#define BUILD_TIME \"${BUILD_TIME}\"\n"
|
||||
)
|
||||
|
||||
# cleanup
|
||||
unset(MY_WC_HASH)
|
||||
unset(MY_WC_COMMIT_TIMESTAMP)
|
||||
unset(MY_WC_BRANCH)
|
||||
unset(BUILD_DATE)
|
||||
unset(BUILD_TIME)
|
||||
|
||||
|
||||
# Copy the file to the final header only if the version changes
|
||||
# and avoid needless rebuilds
|
||||
# TODO: verify this comment is true, as BUILD_TIME probably changes
|
||||
|
@@ -201,7 +201,7 @@ def cmake_get_src(f):
|
||||
# replace_line(f, i - 1, new_path_rel)
|
||||
|
||||
else:
|
||||
raise Exception("non existant include %s:%d -> %s" % (f, i, new_file))
|
||||
raise Exception("non existent include %s:%d -> %s" % (f, i, new_file))
|
||||
|
||||
# print(new_file)
|
||||
|
||||
|
@@ -125,6 +125,8 @@ def create_nb_project_main():
|
||||
f.write(' </configuration>\n')
|
||||
f.write('</project>\n')
|
||||
|
||||
f.close()
|
||||
|
||||
f = open(join(PROJECT_DIR_NB, "configurations.xml"), 'w')
|
||||
|
||||
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
|
||||
@@ -243,6 +245,8 @@ def create_nb_project_main():
|
||||
|
||||
f.write('</configurationDescriptor>\n')
|
||||
|
||||
f.close()
|
||||
|
||||
|
||||
def main():
|
||||
create_nb_project_main()
|
||||
|
@@ -63,21 +63,21 @@ def create_qtc_project_main():
|
||||
if SIMPLE_PROJECTFILE:
|
||||
# --- qtcreator specific, simple format
|
||||
PROJECT_NAME = "Blender"
|
||||
f = open(os.path.join(PROJECT_DIR, "%s.files" % PROJECT_NAME), 'w')
|
||||
f.write("\n".join(files_rel))
|
||||
with open(os.path.join(PROJECT_DIR, "%s.files" % PROJECT_NAME), 'w') as f:
|
||||
f.write("\n".join(files_rel))
|
||||
|
||||
f = open(os.path.join(PROJECT_DIR, "%s.includes" % PROJECT_NAME), 'w')
|
||||
f.write("\n".join(sorted(list(set(os.path.dirname(f)
|
||||
for f in files_rel if is_c_header(f))))))
|
||||
with open(os.path.join(PROJECT_DIR, "%s.includes" % PROJECT_NAME), 'w') as f:
|
||||
f.write("\n".join(sorted(list(set(os.path.dirname(f)
|
||||
for f in files_rel if is_c_header(f))))))
|
||||
|
||||
qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % PROJECT_NAME)
|
||||
f = open(qtc_prj, 'w')
|
||||
f.write("[General]\n")
|
||||
with open(qtc_prj, 'w') as f:
|
||||
f.write("[General]\n")
|
||||
|
||||
qtc_cfg = os.path.join(PROJECT_DIR, "%s.config" % PROJECT_NAME)
|
||||
if not os.path.exists(qtc_cfg):
|
||||
f = open(qtc_cfg, 'w')
|
||||
f.write("// ADD PREDEFINED MACROS HERE!\n")
|
||||
with open(qtc_cfg, 'w') as f:
|
||||
f.write("// ADD PREDEFINED MACROS HERE!\n")
|
||||
else:
|
||||
includes, defines = cmake_advanced_info()
|
||||
|
||||
@@ -96,29 +96,30 @@ def create_qtc_project_main():
|
||||
PROJECT_NAME = project_name_get()
|
||||
|
||||
FILE_NAME = PROJECT_NAME.lower()
|
||||
f = open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
|
||||
f.write("\n".join(files_rel))
|
||||
with open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w') as f:
|
||||
f.write("\n".join(files_rel))
|
||||
|
||||
f = open(os.path.join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w', encoding='utf-8')
|
||||
f.write("\n".join(sorted(includes)))
|
||||
with open(os.path.join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w', encoding='utf-8') as f:
|
||||
f.write("\n".join(sorted(includes)))
|
||||
|
||||
qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME)
|
||||
f = open(qtc_prj, 'w')
|
||||
f.write("[General]\n")
|
||||
with open(qtc_prj, 'w') as f:
|
||||
f.write("[General]\n")
|
||||
|
||||
qtc_cfg = os.path.join(PROJECT_DIR, "%s.config" % FILE_NAME)
|
||||
f = open(qtc_cfg, 'w')
|
||||
f.write("// ADD PREDEFINED MACROS TO %s_custom.config!\n" % FILE_NAME)
|
||||
qtc_custom_cfg = os.path.join(PROJECT_DIR, "%s_custom.config" % FILE_NAME)
|
||||
if os.path.exists(qtc_custom_cfg):
|
||||
fc = open(qtc_custom_cfg, 'r')
|
||||
f.write(fc.read())
|
||||
fc.close()
|
||||
f.write("\n")
|
||||
defines_final = [("#define %s %s" % (item[0], quote_define(item[1]))) for item in defines]
|
||||
if sys.platform != "win32":
|
||||
defines_final += cmake_compiler_defines()
|
||||
f.write("\n".join(defines_final))
|
||||
with open(qtc_cfg, 'w') as f:
|
||||
f.write("// ADD PREDEFINED MACROS TO %s_custom.config!\n" % FILE_NAME)
|
||||
|
||||
qtc_custom_cfg = os.path.join(PROJECT_DIR, "%s_custom.config" % FILE_NAME)
|
||||
if os.path.exists(qtc_custom_cfg):
|
||||
with open(qtc_custom_cfg, 'r') as fc:
|
||||
f.write(fc.read())
|
||||
f.write("\n")
|
||||
|
||||
defines_final = [("#define %s %s" % (item[0], quote_define(item[1]))) for item in defines]
|
||||
if sys.platform != "win32":
|
||||
defines_final += cmake_compiler_defines()
|
||||
f.write("\n".join(defines_final))
|
||||
|
||||
print("Blender project file written to: %r" % qtc_prj)
|
||||
# --- end
|
||||
@@ -137,17 +138,17 @@ def create_qtc_project_python():
|
||||
PROJECT_NAME = project_name_get() + "_Python"
|
||||
|
||||
FILE_NAME = PROJECT_NAME.lower()
|
||||
f = open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
|
||||
f.write("\n".join(files_rel))
|
||||
with open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w') as f:
|
||||
f.write("\n".join(files_rel))
|
||||
|
||||
qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME)
|
||||
f = open(qtc_prj, 'w')
|
||||
f.write("[General]\n")
|
||||
with open(qtc_prj, 'w') as f:
|
||||
f.write("[General]\n")
|
||||
|
||||
qtc_cfg = os.path.join(PROJECT_DIR, "%s.config" % FILE_NAME)
|
||||
if not os.path.exists(qtc_cfg):
|
||||
f = open(qtc_cfg, 'w')
|
||||
f.write("// ADD PREDEFINED MACROS HERE!\n")
|
||||
with open(qtc_cfg, 'w') as f:
|
||||
f.write("// ADD PREDEFINED MACROS HERE!\n")
|
||||
|
||||
print("Python project file written to: %r" % qtc_prj)
|
||||
|
||||
|
62
build_files/cmake/config/blender_full.cmake
Normal file
62
build_files/cmake/config/blender_full.cmake
Normal file
@@ -0,0 +1,62 @@
|
||||
# turn everything OFF except for python which defaults to ON
|
||||
# and is needed for the UI
|
||||
#
|
||||
# Example usage:
|
||||
# cmake -C../blender/build_files/cmake/config/blender_full.cmake ../blender
|
||||
#
|
||||
|
||||
set(WITH_BUILDINFO ON CACHE BOOL "" FORCE)
|
||||
set(WITH_BULLET ON CACHE BOOL "" FORCE)
|
||||
set(WITH_CODEC_AVI ON CACHE BOOL "" FORCE)
|
||||
set(WITH_CODEC_FFMPEG ON CACHE BOOL "" FORCE)
|
||||
set(WITH_CODEC_SNDFILE ON CACHE BOOL "" FORCE)
|
||||
set(WITH_CYCLES ON CACHE BOOL "" FORCE)
|
||||
set(WITH_FFTW3 ON CACHE BOOL "" FORCE)
|
||||
set(WITH_LIBMV ON CACHE BOOL "" FORCE)
|
||||
set(WITH_GAMEENGINE ON CACHE BOOL "" FORCE)
|
||||
set(WITH_COMPOSITOR ON CACHE BOOL "" FORCE)
|
||||
set(WITH_FREESTYLE ON CACHE BOOL "" FORCE)
|
||||
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IK_SOLVER ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IK_ITASC ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IMAGE_CINEON ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IMAGE_DDS ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IMAGE_FRAMESERVER ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IMAGE_HDR ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IMAGE_OPENEXR ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IMAGE_OPENJPEG ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IMAGE_REDCODE ON CACHE BOOL "" FORCE)
|
||||
set(WITH_IMAGE_TIFF ON CACHE BOOL "" FORCE)
|
||||
set(WITH_INPUT_NDOF ON CACHE BOOL "" FORCE)
|
||||
set(WITH_INTERNATIONAL ON CACHE BOOL "" FORCE)
|
||||
set(WITH_JACK ON CACHE BOOL "" FORCE)
|
||||
set(WITH_LZMA ON CACHE BOOL "" FORCE)
|
||||
set(WITH_LZO ON CACHE BOOL "" FORCE)
|
||||
set(WITH_MOD_BOOLEAN ON CACHE BOOL "" FORCE)
|
||||
set(WITH_MOD_FLUID ON CACHE BOOL "" FORCE)
|
||||
set(WITH_MOD_REMESH ON CACHE BOOL "" FORCE)
|
||||
set(WITH_MOD_SMOKE ON CACHE BOOL "" FORCE)
|
||||
set(WITH_MOD_OCEANSIM ON CACHE BOOL "" FORCE)
|
||||
set(WITH_AUDASPACE ON CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENAL ON CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENCOLLADA ON CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENCOLORIO ON CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENMP ON CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENNL ON CACHE BOOL "" FORCE)
|
||||
set(WITH_PYTHON_INSTALL ON CACHE BOOL "" FORCE)
|
||||
set(WITH_RAYOPTIMIZATION ON CACHE BOOL "" FORCE)
|
||||
set(WITH_SDL ON CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
|
||||
|
||||
set(WITH_PLAYER ON CACHE BOOL "" FORCE)
|
||||
set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
set(WITH_CODEC_QUICKTIME ON CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
@@ -44,6 +44,7 @@ set(WITH_AUDASPACE OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENAL OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENCOLLADA OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENCOLORIO OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENIMAGEIO OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENMP OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_OPENNL OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_PYTHON_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
|
@@ -221,7 +221,7 @@ macro(SETUP_LIBDIRS)
|
||||
if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs
|
||||
link_directories(${PYTHON_LIBPATH})
|
||||
endif()
|
||||
if(WITH_SDL)
|
||||
if(WITH_SDL AND NOT WITH_SDL_DYNLOAD)
|
||||
link_directories(${SDL_LIBPATH})
|
||||
endif()
|
||||
if(WITH_CODEC_FFMPEG)
|
||||
@@ -284,8 +284,7 @@ macro(setup_liblinks
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}")
|
||||
|
||||
target_link_libraries(${target}
|
||||
${OPENGL_gl_LIBRARY}
|
||||
${OPENGL_glu_LIBRARY}
|
||||
${BLENDER_GL_LIBRARIES}
|
||||
${PNG_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${FREETYPE_LIBRARY})
|
||||
@@ -305,7 +304,7 @@ macro(setup_liblinks
|
||||
endif()
|
||||
|
||||
if(WITH_SYSTEM_GLEW)
|
||||
target_link_libraries(${target} ${GLEW_LIBRARY})
|
||||
target_link_libraries(${target} ${BLENDER_GLEW_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_BULLET AND WITH_SYSTEM_BULLET)
|
||||
target_link_libraries(${target} ${BULLET_LIBRARIES})
|
||||
@@ -322,7 +321,7 @@ macro(setup_liblinks
|
||||
if(WITH_CODEC_SNDFILE)
|
||||
target_link_libraries(${target} ${SNDFILE_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_SDL)
|
||||
if(WITH_SDL AND NOT WITH_SDL_DYNLOAD)
|
||||
target_link_libraries(${target} ${SDL_LIBRARY})
|
||||
endif()
|
||||
if(WITH_CODEC_QUICKTIME)
|
||||
@@ -359,9 +358,12 @@ macro(setup_liblinks
|
||||
endif()
|
||||
if(WITH_CODEC_FFMPEG)
|
||||
|
||||
# Strange!, without this ffmpeg gives linking errors (on linux)
|
||||
# even though its linked above
|
||||
target_link_libraries(${target} ${OPENGL_glu_LIBRARY})
|
||||
# Strange! Without this ffmpeg gives linking errors (on linux),
|
||||
# even though it's linked above.
|
||||
# XXX: Does FFMPEG depend on GLU?
|
||||
if(WITH_GLU)
|
||||
target_link_libraries(${target} ${OPENGL_glu_LIBRARY})
|
||||
endif()
|
||||
|
||||
target_link_libraries(${target} ${FFMPEG_LIBRARIES})
|
||||
endif()
|
||||
@@ -557,6 +559,9 @@ macro(SETUP_BLENDER_SORTED_LIBS)
|
||||
extern_wcwidth
|
||||
extern_libmv
|
||||
extern_glog
|
||||
extern_sdlew
|
||||
|
||||
bf_intern_glew_mx
|
||||
)
|
||||
|
||||
if(WITH_COMPOSITOR)
|
||||
@@ -574,7 +579,7 @@ macro(SETUP_BLENDER_SORTED_LIBS)
|
||||
endif()
|
||||
|
||||
if(NOT WITH_SYSTEM_GLEW)
|
||||
list(APPEND BLENDER_SORTED_LIBS extern_glew)
|
||||
list(APPEND BLENDER_SORTED_LIBS ${BLENDER_GLEW_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(WITH_BINRELOC)
|
||||
@@ -718,6 +723,8 @@ macro(TEST_SSE_SUPPORT
|
||||
endmacro()
|
||||
|
||||
macro(TEST_STDBOOL_SUPPORT)
|
||||
include(CheckCSourceRuns)
|
||||
|
||||
# This program will compile correctly if and only if
|
||||
# this C compiler supports C99 stdbool.
|
||||
check_c_source_runs("
|
||||
@@ -992,7 +999,7 @@ macro(ADD_CHECK_CXX_COMPILER_FLAG
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(get_blender_version)
|
||||
function(get_blender_version)
|
||||
# So cmake depends on BKE_blender.h, beware of inf-loops!
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h
|
||||
${CMAKE_BINARY_DIR}/source/blender/blenkernel/BKE_blender.h.done)
|
||||
@@ -1027,31 +1034,24 @@ macro(get_blender_version)
|
||||
|
||||
math(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
|
||||
math(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
|
||||
set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}")
|
||||
set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}" PARENT_SCOPE)
|
||||
|
||||
set(BLENDER_SUBVERSION ${_out_subversion})
|
||||
set(BLENDER_VERSION_CHAR ${_out_version_char})
|
||||
set(BLENDER_VERSION_CYCLE ${_out_version_cycle})
|
||||
set(BLENDER_SUBVERSION ${_out_subversion} PARENT_SCOPE)
|
||||
set(BLENDER_VERSION_CHAR ${_out_version_char} PARENT_SCOPE)
|
||||
set(BLENDER_VERSION_CYCLE ${_out_version_cycle} PARENT_SCOPE)
|
||||
|
||||
# for packaging, alpha to numbers
|
||||
string(COMPARE EQUAL "${BLENDER_VERSION_CHAR}" "" _out_version_char_empty)
|
||||
if(${_out_version_char_empty})
|
||||
set(BLENDER_VERSION_CHAR_INDEX "0")
|
||||
set(BLENDER_VERSION_CHAR_INDEX "0" PARENT_SCOPE)
|
||||
else()
|
||||
set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w x y z)
|
||||
list(FIND _char_ls ${BLENDER_VERSION_CHAR} _out_version_char_index)
|
||||
math(EXPR BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index} + 1")
|
||||
unset(_char_ls)
|
||||
unset(_out_version_char_index)
|
||||
math(EXPR BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index} + 1" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
unset(_out_subversion)
|
||||
unset(_out_version_char)
|
||||
unset(_out_version_char_empty)
|
||||
unset(_out_version_cycle)
|
||||
|
||||
# message(STATUS "Version (Internal): ${BLENDER_VERSION}.${BLENDER_SUBVERSION}, Version (external): ${BLENDER_VERSION}${BLENDER_VERSION_CHAR}-${BLENDER_VERSION_CYCLE}")
|
||||
endmacro()
|
||||
endfunction()
|
||||
|
||||
|
||||
# hacks to override initial project settings
|
||||
@@ -1148,6 +1148,7 @@ macro(delayed_install
|
||||
endif()
|
||||
set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination})
|
||||
endforeach()
|
||||
unset(f)
|
||||
endmacro()
|
||||
|
||||
# note this is a function instead of a macro so that ${BUILD_TYPE} in targetdir
|
||||
@@ -1167,6 +1168,7 @@ function(delayed_do_install
|
||||
list(GET destinations ${i} d)
|
||||
install(FILES ${f} DESTINATION ${targetdir}/${d})
|
||||
endforeach()
|
||||
unset(f)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -1381,3 +1383,14 @@ macro(find_python_package
|
||||
|
||||
unset(_upper_package)
|
||||
endmacro()
|
||||
|
||||
# like Python's 'print(dir())'
|
||||
macro(print_all_vars)
|
||||
get_cmake_property(_vars VARIABLES)
|
||||
foreach(_var ${_vars})
|
||||
message("${_var}=${${_var}}")
|
||||
endforeach()
|
||||
unset(_vars)
|
||||
unset(_var)
|
||||
endmacro()
|
||||
|
||||
|
@@ -2,7 +2,6 @@ set(PROJECT_DESCRIPTION "Blender is a very fast and versatile 3D modeller/rende
|
||||
set(PROJECT_COPYRIGHT "Copyright (C) 2001-2012 Blender Foundation")
|
||||
set(PROJECT_CONTACT "foundation@blender.org")
|
||||
set(PROJECT_VENDOR "Blender Foundation")
|
||||
set(ORG_WEBSITE "www.blender.org")
|
||||
|
||||
set(MAJOR_VERSION ${BLENDER_VERSION_MAJOR})
|
||||
set(MINOR_VERSION ${BLENDER_VERSION_MINOR})
|
||||
@@ -32,6 +31,7 @@ if(EXISTS ${CMAKE_SOURCE_DIR}/.git/)
|
||||
endif()
|
||||
endif()
|
||||
set(BUILD_REV ${MY_WC_HASH})
|
||||
unset(MY_WC_HASH)
|
||||
|
||||
|
||||
# Force Package Name
|
||||
@@ -41,7 +41,7 @@ set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
# RPM packages
|
||||
include(build_files/cmake/RpmBuild.cmake)
|
||||
if(RPMBUILD_FOUND AND NOT WIN32)
|
||||
if(RPMBUILD_FOUND)
|
||||
set(CPACK_GENERATOR "RPM")
|
||||
set(CPACK_RPM_PACKAGE_RELEASE "git${CPACK_DATE}.${BUILD_REV}")
|
||||
set(CPACK_SET_DESTDIR "true")
|
||||
@@ -61,7 +61,25 @@ if(APPLE)
|
||||
set(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE)
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_EXECUTABLES "blender")
|
||||
if(WIN32)
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Blender Foundation/Blender")
|
||||
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Blender Foundation/Blender")
|
||||
|
||||
set(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/source/icons/winblender.ico)
|
||||
set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
|
||||
|
||||
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/release/text/GPL-license.txt)
|
||||
set(CPACK_WIX_PRODUCT_ICON ${CMAKE_SOURCE_DIR}/source/icons/winblender.ico)
|
||||
set(CPACK_WIX_UPGRADE_GUID "B767E4FD-7DE7-4094-B051-3AE62E13A17A")
|
||||
|
||||
set(CPACK_WIX_UI_BANNER ${LIBDIR}/package/installer_wix/WIX_UI_BANNER.bmp)
|
||||
set(CPACK_WIX_UI_DIALOG ${LIBDIR}/package/installer_wix/WIX_UI_DIALOG.bmp)
|
||||
|
||||
#force lzma instead of deflate
|
||||
set(CPACK_WIX_LIGHT_EXTRA_FLAGS -dcl:high)
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_EXECUTABLES "blender" "blender")
|
||||
include(CPack)
|
||||
|
||||
# Target for build_archive.py script, to automatically pass along
|
||||
@@ -76,6 +94,8 @@ macro(add_package_archive packagename extension)
|
||||
OUTPUT ${package_output}
|
||||
COMMAND ${build_archive} ${packagename} ${extension} bin release
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
unset(build_archive)
|
||||
unset(package_output)
|
||||
endmacro()
|
||||
|
||||
if(APPLE)
|
||||
|
@@ -17,7 +17,7 @@ else
|
||||
blender_version_full=${blender_version}
|
||||
fi
|
||||
|
||||
blender_ver_string=$blender_version+svn$blender_version_full
|
||||
blender_ver_string=$blender_version+git$blender_version_full
|
||||
|
||||
pkgname=blender-snapshot
|
||||
pkgver=$blender_ver_string
|
||||
@@ -27,8 +27,8 @@ arch=('i686' 'x86_64')
|
||||
url="www.blender.org"
|
||||
license=('GPL')
|
||||
groups=()
|
||||
depends=('libjpeg' 'libpng' 'openjpeg' 'libtiff' 'openexr' 'python>=3.2' 'gettext' 'libxi' 'libxmu' 'mesa' 'freetype2' 'openal' 'sdl' 'libsndfile' 'ffmpeg')
|
||||
makedepends=('cmake' 'svn')
|
||||
depends=('libjpeg' 'libpng' 'openjpeg' 'libtiff' 'openexr' 'python>=3.4' 'gettext' 'libxi' 'libxmu' 'mesa' 'freetype2' 'openal' 'sdl' 'libsndfile' 'ffmpeg')
|
||||
makedepends=('cmake' 'git')
|
||||
optdepends=()
|
||||
provides=()
|
||||
conflicts=('blender')
|
||||
@@ -36,7 +36,7 @@ replaces=('blender')
|
||||
backup=()
|
||||
options=()
|
||||
install=blender.install
|
||||
# use current svn to make the package.
|
||||
# use current git to make the package.
|
||||
# source=(http://download.blender.org/source/$pkgname-$pkgver.tar.gz)
|
||||
# md5sums=('27edb80c82c25252d43d6a01980d953a') #generate with 'makepkg -g'
|
||||
source=()
|
||||
@@ -51,11 +51,7 @@ build() {
|
||||
-DCMAKE_BUILD_TYPE:STRING=Release \
|
||||
-DWITH_INSTALL_PORTABLE:BOOL=OFF \
|
||||
-DWITH_PYTHON_INSTALL:BOOL=OFF \
|
||||
-DWITH_OPENCOLLADA:BOOL=OFF \
|
||||
-DPYTHON_VERSION:STRING=3.2 \
|
||||
-DPYTHON_LIBPATH:STRING=/usr/lib \
|
||||
-DPYTHON_LIBRARY:STRING=python3.2mu \
|
||||
-DPYTHON_INCLUDE_DIRS:STRING=/usr/include/python3.2mu
|
||||
-DWITH_OPENCOLLADA:BOOL=OFF
|
||||
|
||||
make $MAKEFLAGS
|
||||
}
|
||||
|
@@ -68,7 +68,7 @@ BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib ${BF_FFMPEG}/lib' #ogg libs are stored i
|
||||
WITH_BF_SDL = True
|
||||
BF_SDL = LIBDIR + '/sdl' #$(shell sdl-config --prefix)
|
||||
BF_SDL_INC = '${BF_SDL}/include' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
|
||||
BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
|
||||
BF_SDL_LIB = 'SDL2' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
|
||||
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||
|
||||
WITH_BF_OPENEXR = True
|
||||
@@ -205,7 +205,7 @@ BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||
|
||||
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||
BF_CYCLES_CUDA_NVCC = '/usr/local/cuda/bin/nvcc'
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||
|
||||
#Freestyle
|
||||
WITH_BF_FREESTYLE = True
|
||||
|
@@ -197,7 +197,7 @@ BF_BOOST = '/usr'
|
||||
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||
BF_BOOST_LIB = 'boost_filesystem boost_regex boost_system boost_thread boost_date_time'
|
||||
BF_BOOST_LIB_STATIC = '${BF_BOOST_LIBPATH}/libboost_filesystem.a ${BF_BOOST_LIBPATH}/libboost_date_time.a ' + \
|
||||
'${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a' + \
|
||||
'${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a ' + \
|
||||
'${BF_BOOST_LIBPATH}/libboost_thread.a'
|
||||
BF_BOOST_LIB_INTERNATIONAL = 'boost_locale'
|
||||
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||
@@ -262,6 +262,6 @@ BF_INSTALLDIR='../install/linux'
|
||||
#Link against pthread
|
||||
PLATFORM_LINKFLAGS = ['-pthread']
|
||||
|
||||
#Fix for LLVM conflict with Mesa llvmpipe
|
||||
if WITH_BF_LLVM:
|
||||
PLATFORM_LINKFLAGS += ['-Wl,--version-script=source/creator/blender.map']
|
||||
#Fix for LLVM conflict with Mesa llvmpipe, SDL dynload also requires symbols to be hidden.
|
||||
# TODO(sergey): Move this to SConstruct, so we can have this line depended on user config.
|
||||
PLATFORM_LINKFLAGS += ['-Wl,--version-script=source/creator/blender.map']
|
||||
|
@@ -196,7 +196,7 @@ C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-pro
|
||||
|
||||
CC_WARN = [ '-Wall' ]
|
||||
|
||||
LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi']
|
||||
LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi', '-limm32']
|
||||
|
||||
PLATFORM_LINKFLAGS = ['-Xlinker', '--stack=2097152']
|
||||
|
||||
|
@@ -57,7 +57,7 @@ BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
|
||||
WITH_BF_SDL = True
|
||||
BF_SDL = LIBDIR + '/sdl'
|
||||
BF_SDL_INC = '${BF_SDL}/include'
|
||||
BF_SDL_LIB = 'SDL.lib'
|
||||
BF_SDL_LIB = 'SDL2.lib'
|
||||
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||
|
||||
BF_PTHREADS = LIBDIR + '/pthreads'
|
||||
@@ -197,7 +197,7 @@ BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||
#CUDA
|
||||
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||
#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||
|
||||
#Ray trace optimization
|
||||
WITH_BF_RAYOPTIMIZATION = True
|
||||
@@ -235,7 +235,7 @@ C_WARN = []
|
||||
CC_WARN = []
|
||||
CXX_WARN = []
|
||||
|
||||
LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi']
|
||||
LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi', 'imm32']
|
||||
|
||||
PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:IX86','/STACK:2097152','/INCREMENTAL:NO', '/LARGEADDRESSAWARE', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib']
|
||||
|
||||
|
@@ -190,7 +190,7 @@ C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-pro
|
||||
|
||||
CC_WARN = [ '-Wall' ]
|
||||
|
||||
LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi', '-lpthread']
|
||||
LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi', '-lpthread', '-limm32']
|
||||
|
||||
PLATFORM_LINKFLAGS = ['-Xlinker', '--stack=2097152']
|
||||
|
||||
|
@@ -52,7 +52,7 @@ BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
|
||||
WITH_BF_SDL = True
|
||||
BF_SDL = LIBDIR + '/sdl'
|
||||
BF_SDL_INC = '${BF_SDL}/include'
|
||||
BF_SDL_LIB = 'SDL.lib'
|
||||
BF_SDL_LIB = 'SDL2.lib'
|
||||
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||
|
||||
WITH_BF_JACK = False
|
||||
@@ -200,7 +200,7 @@ BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||
#CUDA
|
||||
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||
#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||
|
||||
#Ray trace optimization
|
||||
WITH_BF_RAYOPTIMIZATION = True
|
||||
@@ -242,7 +242,7 @@ C_WARN = []
|
||||
CC_WARN = []
|
||||
CXX_WARN = []
|
||||
|
||||
LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi']
|
||||
LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi', 'imm32']
|
||||
|
||||
PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/STACK:2097152','/OPT:NOREF','/INCREMENTAL:NO', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib']
|
||||
|
||||
|
@@ -143,7 +143,7 @@ def setup_staticlibs(lenv):
|
||||
libincs += Split(lenv['BF_FREETYPE_LIBPATH'])
|
||||
if lenv['WITH_BF_PYTHON']:
|
||||
libincs += Split(lenv['BF_PYTHON_LIBPATH'])
|
||||
if lenv['WITH_BF_SDL']:
|
||||
if lenv['WITH_BF_SDL'] and not lenv['WITH_BF_SDL_DYNLOAD']:
|
||||
libincs += Split(lenv['BF_SDL_LIBPATH'])
|
||||
if lenv['WITH_BF_JACK'] and not lenv['WITH_BF_JACK_DYNLOAD']:
|
||||
libincs += Split(lenv['BF_JACK_LIBPATH'])
|
||||
@@ -303,7 +303,7 @@ def setup_syslibs(lenv):
|
||||
if lenv['WITH_BF_ELTOPO']:
|
||||
syslibs += Split(lenv['BF_LAPACK_LIB'])
|
||||
'''
|
||||
if lenv['WITH_BF_SDL']:
|
||||
if lenv['WITH_BF_SDL'] and not lenv['WITH_BF_SDL_DYNLOAD']:
|
||||
syslibs += Split(lenv['BF_SDL_LIB'])
|
||||
if not lenv['WITH_BF_STATICOPENGL']:
|
||||
syslibs += Split(lenv['BF_OPENGL_LIB'])
|
||||
@@ -381,12 +381,19 @@ def creator(env):
|
||||
defs.append('WITH_BINRELOC')
|
||||
|
||||
if env['WITH_BF_SDL']:
|
||||
if env['WITH_BF_SDL_DYNLOAD']:
|
||||
defs.append('WITH_SDL_DYNLOAD')
|
||||
incs.append('#/extern/sdlew/include')
|
||||
defs.append('WITH_SDL')
|
||||
|
||||
if env['WITH_BF_LIBMV']:
|
||||
incs.append('#/extern/libmv')
|
||||
defs.append('WITH_LIBMV')
|
||||
|
||||
if env['WITH_BF_CYCLES'] and env['WITH_BF_CYCLES_LOGGING']:
|
||||
incs.append('#/intern/cycles/blender')
|
||||
defs.append('WITH_CYCLES_LOGGING')
|
||||
|
||||
if env['WITH_BF_FFMPEG']:
|
||||
defs.append('WITH_FFMPEG')
|
||||
|
||||
@@ -809,10 +816,6 @@ def AppIt(target=None, source=None, env=None):
|
||||
instname = env['LCGDIR'][1:] # made libiomp5 part of blender libs
|
||||
cmd = 'ditto --arch %s %s/openmp/lib/libiomp5.dylib %s/%s.app/Contents/Resources/lib/'%(osxarch, instname, installdir, binary) # copy libiomp5
|
||||
commands.getoutput(cmd)
|
||||
cmd = 'install_name_tool -id @loader_path/../Resources/lib/libiomp5.dylib %s/%s.app/Contents/Resources/lib/libiomp5.dylib'%(installdir, binary) # change id of libiomp5
|
||||
commands.getoutput(cmd)
|
||||
cmd = 'install_name_tool -change @loader_path/libiomp5.dylib @loader_path/../Resources/lib/libiomp5.dylib %s/%s.app/Contents/MacOS/%s'%(installdir, binary, binary) # change ref to libiomp5 ( blender )
|
||||
commands.getoutput(cmd)
|
||||
|
||||
# extract copy system python, be sure to update other build systems
|
||||
# when making changes to the files that are copied.
|
||||
|
@@ -108,7 +108,7 @@ def validate_arguments(args, bc):
|
||||
opts_list = [
|
||||
'WITH_BF_FREESTYLE', 'WITH_BF_PYTHON', 'WITH_BF_PYTHON_SAFETY', 'WITH_BF_PYTHON_SECURITY', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'BF_PYTHON_LIBPATH_ARCH', 'WITH_BF_STATICPYTHON', 'WITH_OSX_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL', 'BF_PYTHON_ABI_FLAGS',
|
||||
'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
|
||||
'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
|
||||
'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH', 'WITH_BF_SDL_DYNLOAD',
|
||||
'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH', 'WITH_BF_JACK_DYNLOAD',
|
||||
'WITH_BF_SNDFILE', 'BF_SNDFILE', 'BF_SNDFILE_INC', 'BF_SNDFILE_LIB', 'BF_SNDFILE_LIBPATH', 'WITH_BF_STATICSNDFILE', 'BF_SNDFILE_LIB_STATIC',
|
||||
'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH',
|
||||
@@ -136,6 +136,9 @@ def validate_arguments(args, bc):
|
||||
'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH',
|
||||
'WITH_BF_FFTW3', 'BF_FFTW3', 'BF_FFTW3_INC', 'BF_FFTW3_LIB', 'BF_FFTW3_LIBPATH', 'WITH_BF_STATICFFTW3', 'BF_FFTW3_LIB_STATIC',
|
||||
'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC',
|
||||
'WITH_BF_EGL', 'WITH_BF_GLEW_ES', 'BF_GLEW_INC', 'WITH_BF_GL_PROFILE_CORE', 'WITH_BF_GL_PROFILE_COMPAT', 'WITH_BF_GL_PROFILE_ES20',
|
||||
'WITH_BF_GLEW_MX', 'WITH_BF_GL_EGL', 'WITH_BF_GL_ANGLE',
|
||||
|
||||
'WITH_BF_COLLADA', 'BF_COLLADA', 'BF_COLLADA_INC', 'BF_COLLADA_LIB', 'BF_OPENCOLLADA', 'BF_OPENCOLLADA_INC', 'BF_OPENCOLLADA_LIB', 'BF_OPENCOLLADA_LIBPATH', 'BF_PCRE', 'BF_PCRE_LIB', 'BF_PCRE_LIBPATH', 'BF_EXPAT', 'BF_EXPAT_LIB', 'BF_EXPAT_LIBPATH',
|
||||
'WITH_BF_STATICOPENCOLLADA', 'BF_OPENCOLLADA_LIB_STATIC',
|
||||
'WITH_BF_PLAYER',
|
||||
@@ -176,7 +179,7 @@ def validate_arguments(args, bc):
|
||||
'WITH_BF_OIIO', 'WITH_BF_STATICOIIO', 'BF_OIIO', 'BF_OIIO_INC', 'BF_OIIO_LIB', 'BF_OIIO_LIB_STATIC', 'BF_OIIO_LIBPATH',
|
||||
'WITH_BF_OCIO', 'WITH_BF_STATICOCIO', 'BF_OCIO', 'BF_OCIO_INC', 'BF_OCIO_LIB', 'BF_OCIO_LIB_STATIC', 'BF_OCIO_LIBPATH',
|
||||
'WITH_BF_BOOST', 'WITH_BF_STATICBOOST', 'BF_BOOST', 'BF_BOOST_INC', 'BF_BOOST_LIB', 'BF_BOOST_LIB_INTERNATIONAL', 'BF_BOOST_LIB_STATIC', 'BF_BOOST_LIBPATH',
|
||||
'WITH_BF_LIBMV',
|
||||
'WITH_BF_LIBMV', 'WITH_BF_LIBMV_SCHUR_SPECIALIZATIONS',
|
||||
'WITH_BF_CYCLES_OSL', 'WITH_BF_STATICOSL', 'BF_OSL', 'BF_OSL_INC', 'BF_OSL_LIB', 'BF_OSL_LIBPATH', 'BF_OSL_LIB_STATIC', 'BF_OSL_COMPILER',
|
||||
'WITH_BF_LLVM', 'WITH_BF_STATICLLVM', 'BF_LLVM', 'BF_LLVM_LIB', 'BF_LLVM_LIBPATH', 'BF_LLVM_LIB_STATIC', 'BF_PROGRAM_LINKFLAGS'
|
||||
]
|
||||
@@ -185,6 +188,7 @@ def validate_arguments(args, bc):
|
||||
opts_list_split = [
|
||||
'BF_PYTHON_LINKFLAGS',
|
||||
'BF_OPENGL_LINKFLAGS',
|
||||
'BF_GL_DEFINITIONS',
|
||||
'CFLAGS', 'CCFLAGS', 'CXXFLAGS', 'CPPFLAGS',
|
||||
'REL_CFLAGS', 'REL_CCFLAGS', 'REL_CXXFLAGS',
|
||||
'BGE_CXXFLAGS',
|
||||
@@ -192,7 +196,8 @@ def validate_arguments(args, bc):
|
||||
'BF_DEBUG_CFLAGS', 'BF_DEBUG_CCFLAGS', 'BF_DEBUG_CXXFLAGS',
|
||||
'C_WARN', 'CC_WARN', 'CXX_WARN',
|
||||
'LLIBS', 'PLATFORM_LINKFLAGS', 'MACOSX_ARCHITECTURE', 'MACOSX_SDK', 'XCODE_CUR_VER', 'C_COMPILER_ID',
|
||||
'BF_CYCLES_CUDA_BINARIES_ARCH', 'BF_PROGRAM_LINKFLAGS', 'MACOSX_DEPLOYMENT_TARGET'
|
||||
'BF_CYCLES_CUDA_BINARIES_ARCH', 'BF_PROGRAM_LINKFLAGS', 'MACOSX_DEPLOYMENT_TARGET',
|
||||
'WITH_BF_CYCLES_DEBUG', 'WITH_BF_CYCLES_LOGGING'
|
||||
]
|
||||
|
||||
|
||||
@@ -295,6 +300,7 @@ def read_opts(env, cfg, args):
|
||||
('BF_SDL_INC', 'SDL include path', ''),
|
||||
('BF_SDL_LIB', 'SDL library', ''),
|
||||
('BF_SDL_LIBPATH', 'SDL library path', ''),
|
||||
(BoolVariable('WITH_BF_SDL_DYNLOAD', 'Enable runtime dynamic SDL libraries loading (works only on Linux)', False)),
|
||||
|
||||
(BoolVariable('WITH_BF_JACK', 'Enable jack support if true', True)),
|
||||
('BF_JACK', 'jack base path', ''),
|
||||
@@ -461,6 +467,18 @@ def read_opts(env, cfg, args):
|
||||
('BF_OPENGL_LIB_STATIC', 'OpenGL static libraries', ''),
|
||||
('BF_OPENGL_LINKFLAGS', 'OpenGL link flags', ''),
|
||||
|
||||
(BoolVariable('WITH_BF_GLEW_MX', '', False)),
|
||||
(BoolVariable('WITH_BF_GLEW_ES', '', False)),
|
||||
(BoolVariable('WITH_BF_GL_EGL', '', False)),
|
||||
(BoolVariable('WITH_BF_GL_PROFILE_COMPAT', '', True)),
|
||||
(BoolVariable('WITH_BF_GL_PROFILE_CORE', '', False)),
|
||||
(BoolVariable('WITH_BF_GL_PROFILE_ES20', '', False)),
|
||||
(BoolVariable('WITH_BF_GL_ANGLE', '', False)),
|
||||
('BF_GL_DEFINITIONS', '', []),
|
||||
('BF_GLEW_INC', '', ''),
|
||||
) # end of opts.AddVariables()
|
||||
|
||||
localopts.AddVariables(
|
||||
(BoolVariable('WITH_BF_COLLADA', 'Build COLLADA import/export module if true', False)),
|
||||
(BoolVariable('WITH_BF_STATICOPENCOLLADA', 'Staticly link to OpenCollada', False)),
|
||||
('BF_COLLADA', 'COLLADA base path', ''),
|
||||
@@ -556,6 +574,7 @@ def read_opts(env, cfg, args):
|
||||
(BoolVariable('WITH_BF_LZMA', 'Enable best LZMA pointcache compression', True)),
|
||||
|
||||
(BoolVariable('WITH_BF_LIBMV', 'Enable libmv structure from motion library', True)),
|
||||
(BoolVariable('WITH_BF_LIBMV_SCHUR_SPECIALIZATIONS', 'Enable fixed-size schur specializations', True)),
|
||||
|
||||
(BoolVariable('WITH_BF_COMPOSITOR', 'Enable the tile based nodal compositor', True)),
|
||||
) # end of opts.AddOptions()
|
||||
@@ -585,6 +604,8 @@ def read_opts(env, cfg, args):
|
||||
('BF_CYCLES_CUDA_NVCC', 'CUDA nvcc compiler path', ''),
|
||||
('BF_CYCLES_CUDA_ENV', 'preset environement nvcc will execute in', ''),
|
||||
('BF_CYCLES_CUDA_BINARIES_ARCH', 'CUDA architectures to compile binaries for', []),
|
||||
(BoolVariable('WITH_BF_CYCLES_DEBUG', 'Build Cycles engine with extra debugging capabilities', False)),
|
||||
(BoolVariable('WITH_BF_CYCLES_LOGGING', 'Build Cycles engine with logging support', True)),
|
||||
|
||||
(BoolVariable('WITH_BF_OIIO', 'Build with OpenImageIO', False)),
|
||||
(BoolVariable('WITH_BF_STATICOIIO', 'Statically link to OpenImageIO', False)),
|
||||
|
@@ -13,8 +13,10 @@ blender_subversion=$(grep "BLENDER_SUBVERSION\s" "$blender_srcdir/source/blender
|
||||
|
||||
if [ "$blender_version_cycle" = "release" ] ; then
|
||||
VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)$blender_version_char
|
||||
SUBMODULE_EXCLUDE="^\(release/scripts/addons_contrib\)$"
|
||||
else
|
||||
VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)_$blender_subversion
|
||||
SUBMODULE_EXCLUDE="^$" # dummy regex
|
||||
fi
|
||||
|
||||
MANIFEST="blender-$VERSION-manifest.txt"
|
||||
@@ -22,15 +24,18 @@ TARBALL="blender-$VERSION.tar.gz"
|
||||
|
||||
cd "$blender_srcdir"
|
||||
|
||||
# not so nice, but works
|
||||
FILTER_FILES_PY="import os, sys; [print(l[:-1]) for l in sys.stdin.readlines() if os.path.isfile(l[:-1])]"
|
||||
|
||||
# Build master list
|
||||
echo -n "Building manifest of files: \"$BASE_DIR/$MANIFEST\" ..."
|
||||
git ls-files > $BASE_DIR/$MANIFEST
|
||||
git ls-files | python3 -c "$FILTER_FILES_PY" > $BASE_DIR/$MANIFEST
|
||||
|
||||
# Enumerate submodules
|
||||
for lcv in $(git submodule | cut -f2 -d" "); do
|
||||
for lcv in $(git submodule | awk '{print $2}' | grep -v "$SUBMODULE_EXCLUDE"); do
|
||||
cd "$BASE_DIR"
|
||||
cd "$blender_srcdir/$lcv"
|
||||
git ls-files | awk '$0="'"$lcv"/'"$0' >> $BASE_DIR/$MANIFEST
|
||||
git ls-files | python3 -c "$FILTER_FILES_PY" | awk '$0="'"$lcv"/'"$0' >> $BASE_DIR/$MANIFEST
|
||||
cd "$BASE_DIR"
|
||||
done
|
||||
echo "OK"
|
||||
|
@@ -112,7 +112,7 @@ class DNACatalogHTML:
|
||||
# ${version} and ${revision}
|
||||
if bpy:
|
||||
version = '.'.join(map(str, bpy.app.version))
|
||||
revision = bpy.app.build_revision[:-1]
|
||||
revision = bpy.app.build_hash
|
||||
else:
|
||||
version = str(header.Version)
|
||||
revision = 'Unknown'
|
||||
@@ -404,7 +404,7 @@ def main():
|
||||
# Files
|
||||
if '--dna-versioned' in sys.argv:
|
||||
blender_version = '_'.join(map(str, bpy.app.version))
|
||||
filename = 'dna-{0}-{1}_endian-{2}-r{3}'.format(sys.arch, sys.byteorder, blender_version, bpy.app.build_revision[2:-1])
|
||||
filename = 'dna-{0}-{1}_endian-{2}-{3}'.format(sys.arch, sys.byteorder, blender_version, bpy.app.build_hash)
|
||||
else:
|
||||
filename = 'dna'
|
||||
dir = os.path.dirname(__file__)
|
||||
@@ -451,7 +451,7 @@ def main():
|
||||
os.remove(Path_Blend)
|
||||
|
||||
# export dna to xhtml
|
||||
log.info("6: export sdna to xhtml file")
|
||||
log.info("6: export sdna to xhtml file: %r" % Path_HTML)
|
||||
handleHTML = open(Path_HTML, "w")
|
||||
catalog.WriteToHTML(handleHTML)
|
||||
handleHTML.close()
|
||||
|
@@ -563,20 +563,26 @@ Bringing it all together
|
||||
|
||||
# handle the keymap
|
||||
wm = bpy.context.window_manager
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY')
|
||||
kmi = km.keymap_items.new(ObjectCursorArray.bl_idname, 'SPACE', 'PRESS', ctrl=True, shift=True)
|
||||
kmi.properties.total = 4
|
||||
addon_keymaps.append((km, kmi))
|
||||
# Note that in background mode (no GUI available), keyconfigs are not available either, so we have to check this
|
||||
# to avoid nasty errors in background case.
|
||||
kc = wm.keyconfigs.addon
|
||||
if kc:
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY')
|
||||
kmi = km.keymap_items.new(ObjectCursorArray.bl_idname, 'SPACE', 'PRESS', ctrl=True, shift=True)
|
||||
kmi.properties.total = 4
|
||||
addon_keymaps.append((km, kmi))
|
||||
|
||||
def unregister():
|
||||
bpy.utils.unregister_class(ObjectCursorArray)
|
||||
bpy.types.VIEW3D_MT_object.remove(menu_func)
|
||||
|
||||
# Note: when unregistering, it's usually good practice to do it in reverse order you registered.
|
||||
# Can avoid strange issues like keymap still referring to operators already unregistered...
|
||||
# handle the keymap
|
||||
for km, kmi in addon_keymaps:
|
||||
km.keymap_items.remove(kmi)
|
||||
addon_keymaps.clear()
|
||||
|
||||
bpy.utils.unregister_class(ObjectCursorArray)
|
||||
bpy.types.VIEW3D_MT_object.remove(menu_func)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
@@ -3,6 +3,10 @@
|
||||
# bash doc/python_api/sphinx_doc_gen.sh
|
||||
# ssh upload means you need an account on the server
|
||||
|
||||
if [ "$1" == "" ] ; then
|
||||
echo "Expected a single argument for the username on blender.org, aborting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Upload vars
|
||||
@@ -16,9 +20,9 @@ DO_OUT_PDF=false
|
||||
|
||||
|
||||
BLENDER="./blender.bin"
|
||||
SSH_USER="ideasman42"
|
||||
SSH_USER=$1
|
||||
SSH_HOST=$SSH_USER"@blender.org"
|
||||
SSH_UPLOAD="/data/www/vhosts/www.blender.org/documentation" # blender_python_api_VERSION, added after
|
||||
SSH_UPLOAD="/data/www/vhosts/www.blender.org/api" # blender_python_api_VERSION, added after
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Blender Version & Info
|
||||
@@ -100,7 +104,7 @@ if $DO_UPLOAD ; then
|
||||
|
||||
cp $SPHINXBASE/sphinx-out/contents.html $SPHINXBASE/sphinx-out/index.html
|
||||
ssh $SSH_USER@blender.org 'rm -rf '$SSH_UPLOAD_FULL'/*'
|
||||
rsync --progress -avze "ssh -p 22" $SPHINXBASE/sphinx-out/* $SSH_HOST:$SSH_UPLOAD_FULL/
|
||||
rsync --progress -ave "ssh -p 22" $SPHINXBASE/sphinx-out/* $SSH_HOST:$SSH_UPLOAD_FULL/
|
||||
|
||||
## symlink the dir to a static URL
|
||||
#ssh $SSH_USER@blender.org 'rm '$SSH_UPLOAD'/250PythonDoc && ln -s '$SSH_UPLOAD_FULL' '$SSH_UPLOAD'/250PythonDoc'
|
||||
@@ -115,11 +119,11 @@ if $DO_UPLOAD ; then
|
||||
|
||||
if $DO_OUT_PDF ; then
|
||||
# rename so local PDF has matching name.
|
||||
rsync --progress -avze "ssh -p 22" $SPHINXBASE/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.pdf
|
||||
rsync --progress -ave "ssh -p 22" $SPHINXBASE/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.pdf
|
||||
fi
|
||||
|
||||
if $DO_OUT_HTML_ZIP ; then
|
||||
rsync --progress -avze "ssh -p 22" $SPHINXBASE/blender_python_reference_$BLENDER_VERSION.zip $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.zip
|
||||
rsync --progress -ave "ssh -p 22" $SPHINXBASE/blender_python_reference_$BLENDER_VERSION.zip $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.zip
|
||||
fi
|
||||
|
||||
fi
|
||||
|
16
extern/CMakeLists.txt
vendored
16
extern/CMakeLists.txt
vendored
@@ -47,7 +47,11 @@ if(WITH_BINRELOC)
|
||||
endif()
|
||||
|
||||
if(NOT WITH_SYSTEM_GLEW)
|
||||
add_subdirectory(glew)
|
||||
if(WITH_GLEW_ES)
|
||||
add_subdirectory(glew-es)
|
||||
else()
|
||||
add_subdirectory(glew)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_GAMEENGINE)
|
||||
@@ -79,12 +83,14 @@ if(WITH_MOD_BOOLEAN)
|
||||
add_subdirectory(carve)
|
||||
endif()
|
||||
|
||||
if(WITH_GHOST_XDND)
|
||||
if(UNIX AND NOT APPLE)
|
||||
add_subdirectory(xdnd)
|
||||
endif()
|
||||
if(WITH_X11 AND WITH_GHOST_XDND)
|
||||
add_subdirectory(xdnd)
|
||||
endif()
|
||||
|
||||
if(WITH_GTESTS)
|
||||
add_subdirectory(gtest)
|
||||
endif()
|
||||
|
||||
if(WITH_SDL AND WITH_SDL_DYNLOAD)
|
||||
add_subdirectory(sdlew)
|
||||
endif()
|
||||
|
9
extern/SConscript
vendored
9
extern/SConscript
vendored
@@ -2,7 +2,11 @@
|
||||
|
||||
Import('env')
|
||||
|
||||
SConscript(['glew/SConscript'])
|
||||
if env['WITH_BF_GLEW_ES']:
|
||||
SConscript(['glew-es/SConscript'])
|
||||
else:
|
||||
SConscript(['glew/SConscript'])
|
||||
|
||||
SConscript(['colamd/SConscript'])
|
||||
SConscript(['rangetree/SConscript'])
|
||||
SConscript(['wcwidth/SConscript'])
|
||||
@@ -46,3 +50,6 @@ if env['WITH_GHOST_XDND']:
|
||||
# FreeBSD doesn't seems to support XDND protocol
|
||||
if env['OURPLATFORM'] in ('linux', 'openbsd3', 'sunos5', 'aix4', 'aix5'):
|
||||
SConscript(['xdnd/SConscript'])
|
||||
|
||||
if env['WITH_BF_SDL'] and env['WITH_BF_SDL_DYNLOAD']:
|
||||
SConscript(['sdlew/SConscript'])
|
||||
|
1
extern/carve/CMakeLists.txt
vendored
1
extern/carve/CMakeLists.txt
vendored
@@ -161,6 +161,7 @@ if(WITH_BOOST)
|
||||
|
||||
add_definitions(
|
||||
-DCARVE_SYSTEM_BOOST
|
||||
-DHAVE_BOOST_LIBRARY
|
||||
)
|
||||
|
||||
list(APPEND INC_SYS
|
||||
|
1
extern/carve/SConscript
vendored
1
extern/carve/SConscript
vendored
@@ -19,6 +19,7 @@ if env['WITH_BF_BOOST']:
|
||||
defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS')
|
||||
|
||||
defs.append('CARVE_SYSTEM_BOOST')
|
||||
defs.append('HAVE_BOOST_LIBRARY')
|
||||
incs.append(env['BF_BOOST_INC'])
|
||||
|
||||
env.BlenderLib ('extern_carve', Split(sources), incs, defs, libtype=['extern'], priority=[40] )
|
||||
|
4
extern/carve/bundle.sh
vendored
4
extern/carve/bundle.sh
vendored
@@ -31,6 +31,8 @@ headers=`find ./lib -type f -iname '*.h' -or -iname '*.hpp' | sed -r 's/^\.\//\t
|
||||
includes=`find ./include -type f -iname '*.h' -or -iname '*.hpp' | sed -r 's/^\.\//\t/' | sort -d`
|
||||
|
||||
cp patches/files/config.h include/carve/config.h
|
||||
mkdir -p include/carve/random
|
||||
cp patches/files/random.h include/carve/random/random.h
|
||||
|
||||
cat > CMakeLists.txt << EOF
|
||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
||||
@@ -91,6 +93,7 @@ if(WITH_BOOST)
|
||||
|
||||
add_definitions(
|
||||
-DCARVE_SYSTEM_BOOST
|
||||
-DHAVE_BOOST_LIBRARY
|
||||
)
|
||||
|
||||
list(APPEND INC_SYS
|
||||
@@ -123,6 +126,7 @@ if env['WITH_BF_BOOST']:
|
||||
defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS')
|
||||
|
||||
defs.append('CARVE_SYSTEM_BOOST')
|
||||
defs.append('HAVE_BOOST_LIBRARY')
|
||||
incs.append(env['BF_BOOST_INC'])
|
||||
|
||||
env.BlenderLib ('extern_carve', Split(sources), incs, defs, libtype=['extern'], priority=[40] )
|
||||
|
61
extern/carve/include/carve/random/random.h
vendored
Normal file
61
extern/carve/include/carve/random/random.h
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
#include <cassert>
|
||||
#include <cmath>
|
||||
#include <vector>
|
||||
|
||||
namespace boost {
|
||||
#if __cplusplus > 199711L
|
||||
# include <random>
|
||||
typedef std::mt19937 mt19937;
|
||||
#else
|
||||
# include <stdlib.h>
|
||||
struct mt19937 {
|
||||
int operator()() {
|
||||
return rand();
|
||||
}
|
||||
|
||||
int max() {
|
||||
return RAND_MAX;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
template<typename T>
|
||||
struct uniform_on_sphere {
|
||||
typedef std::vector<T> result_type;
|
||||
|
||||
uniform_on_sphere(int dimension) {
|
||||
assert(dimension == 3);
|
||||
}
|
||||
|
||||
std::vector<T>
|
||||
operator()(float u1, float u2) {
|
||||
T z = 1.0 - 2.0*u1;
|
||||
T r = std::sqrt(std::max(0.0, 1.0 - z*z));
|
||||
T phi = 2.0*M_PI*u2;
|
||||
T x = r*std::cos(phi);
|
||||
T y = r*std::sin(phi);
|
||||
std::vector<T> result;
|
||||
result.push_back(x);
|
||||
result.push_back(y);
|
||||
result.push_back(z);
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename RNG, typename DISTR>
|
||||
struct variate_generator {
|
||||
|
||||
variate_generator(RNG rng, DISTR distr)
|
||||
: rng_(rng), distr_(distr) {}
|
||||
|
||||
typename DISTR::result_type
|
||||
operator()() {
|
||||
float rng_max_inv = 1.0 / rng_.max();
|
||||
return distr_(rng_() * rng_max_inv, rng_() * rng_max_inv);
|
||||
}
|
||||
|
||||
RNG rng_;
|
||||
DISTR distr_;
|
||||
};
|
||||
|
||||
}
|
6
extern/carve/lib/polyhedron.cpp
vendored
6
extern/carve/lib/polyhedron.cpp
vendored
@@ -36,7 +36,11 @@
|
||||
|
||||
#include <carve/mesh.hpp>
|
||||
|
||||
#include BOOST_INCLUDE(random.hpp)
|
||||
#ifdef HAVE_BOOST_LIBRARY
|
||||
# include BOOST_INCLUDE(random.hpp)
|
||||
#else
|
||||
# include <carve/random/random.h>
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
bool emb_test(carve::poly::Polyhedron *poly,
|
||||
|
61
extern/carve/patches/files/random.h
vendored
Normal file
61
extern/carve/patches/files/random.h
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
#include <cassert>
|
||||
#include <cmath>
|
||||
#include <vector>
|
||||
|
||||
namespace boost {
|
||||
#if __cplusplus > 199711L
|
||||
# include <random>
|
||||
typedef std::mt19937 mt19937;
|
||||
#else
|
||||
# include <stdlib.h>
|
||||
struct mt19937 {
|
||||
int operator()() {
|
||||
return rand();
|
||||
}
|
||||
|
||||
int max() {
|
||||
return RAND_MAX;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
template<typename T>
|
||||
struct uniform_on_sphere {
|
||||
typedef std::vector<T> result_type;
|
||||
|
||||
uniform_on_sphere(int dimension) {
|
||||
assert(dimension == 3);
|
||||
}
|
||||
|
||||
std::vector<T>
|
||||
operator()(float u1, float u2) {
|
||||
T z = 1.0 - 2.0*u1;
|
||||
T r = std::sqrt(std::max(0.0, 1.0 - z*z));
|
||||
T phi = 2.0*M_PI*u2;
|
||||
T x = r*std::cos(phi);
|
||||
T y = r*std::sin(phi);
|
||||
std::vector<T> result;
|
||||
result.push_back(x);
|
||||
result.push_back(y);
|
||||
result.push_back(z);
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename RNG, typename DISTR>
|
||||
struct variate_generator {
|
||||
|
||||
variate_generator(RNG rng, DISTR distr)
|
||||
: rng_(rng), distr_(distr) {}
|
||||
|
||||
typename DISTR::result_type
|
||||
operator()() {
|
||||
float rng_max_inv = 1.0 / rng_.max();
|
||||
return distr_(rng_() * rng_max_inv, rng_() * rng_max_inv);
|
||||
}
|
||||
|
||||
RNG rng_;
|
||||
DISTR distr_;
|
||||
};
|
||||
|
||||
}
|
16
extern/carve/patches/random.patch
vendored
Normal file
16
extern/carve/patches/random.patch
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
diff -r 9a85d733a43d lib/polyhedron.cpp
|
||||
--- a/lib/polyhedron.cpp Tue Jun 24 11:15:23 2014 +1000
|
||||
+++ b/lib/polyhedron.cpp Thu Nov 13 17:36:06 2014 +0500
|
||||
@@ -36,7 +36,11 @@
|
||||
|
||||
#include <carve/mesh.hpp>
|
||||
|
||||
-#include BOOST_INCLUDE(random.hpp)
|
||||
+#ifdef HAVE_BOOST_LIBRARY
|
||||
+# include BOOST_INCLUDE(random.hpp)
|
||||
+#else
|
||||
+# include <carve/random/random.h>
|
||||
+#endif
|
||||
|
||||
namespace {
|
||||
bool emb_test(carve::poly::Polyhedron *poly,
|
1
extern/carve/patches/series
vendored
1
extern/carve/patches/series
vendored
@@ -11,3 +11,4 @@ mesh_simplify_uninitialized_var.patch
|
||||
memory_leak_fix.patch
|
||||
msvc_fix.patch
|
||||
face_hole_merge_workaround.patch
|
||||
random.patch
|
||||
|
11
extern/clew/include/clew.h
vendored
11
extern/clew/include/clew.h
vendored
@@ -350,7 +350,7 @@ typedef unsigned int cl_GLenum;
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_M_IX86)
|
||||
#if _M_IX86_FP >= 0
|
||||
#if _M_IX86_FP >= 0 && !defined(__SSE__)
|
||||
#define __SSE__
|
||||
#endif
|
||||
#if _M_IX86_FP >= 1
|
||||
@@ -1815,6 +1815,11 @@ typedef struct _cl_buffer_region {
|
||||
|
||||
/* Function signature typedef's */
|
||||
|
||||
#ifdef __APPLE__
|
||||
# pragma GCC diagnostic push
|
||||
# pragma GCC diagnostic ignored "-Wignored-attributes"
|
||||
#endif
|
||||
|
||||
/* Platform API */
|
||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *
|
||||
PFNCLGETPLATFORMIDS)(cl_uint /* num_entries */,
|
||||
@@ -2476,6 +2481,10 @@ PFNCLCREATEFROMGLTEXTURE3D)(cl_context /* context */,
|
||||
cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
|
||||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
# pragma GCC diagnostic pop // ignored "-Wignored-attributes"
|
||||
#endif
|
||||
|
||||
/* cl_khr_gl_sharing extension */
|
||||
|
||||
#define cl_khr_gl_sharing 1
|
||||
|
57
extern/glew-es/CMakeLists.txt
vendored
Normal file
57
extern/glew-es/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# The Original Code is Copyright (C) 2013, Blender Foundation
|
||||
# All rights reserved.
|
||||
#
|
||||
# The Original Code is: all of this file.
|
||||
#
|
||||
# Contributor(s): Jason Wilkins
|
||||
#
|
||||
# ***** END GPL LICENSE BLOCK *****
|
||||
|
||||
set(INC
|
||||
include
|
||||
)
|
||||
|
||||
set(INC_SYS
|
||||
|
||||
)
|
||||
|
||||
if(UNIX)
|
||||
list(APPEND INC_SYS
|
||||
${X11_X11_INCLUDE_PATH}
|
||||
)
|
||||
endif()
|
||||
|
||||
set(SRC
|
||||
src/glew.c
|
||||
|
||||
include/GL/eglew.h
|
||||
include/GL/glesew.h
|
||||
include/GL/glew.h
|
||||
include/GL/glxew.h
|
||||
include/GL/wglew.h
|
||||
)
|
||||
|
||||
add_definitions(${GL_DEFINITIONS})
|
||||
|
||||
if(WITH_GLEW_MX)
|
||||
add_definitions(-DGLEW_MX)
|
||||
endif()
|
||||
|
||||
|
||||
blender_add_lib(extern_glew_es "${SRC}" "${INC}" "${INC_SYS}")
|
14
extern/glew-es/SConscript
vendored
Normal file
14
extern/glew-es/SConscript
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import os
|
||||
|
||||
Import('env')
|
||||
|
||||
sources = ['src/glew.c']
|
||||
|
||||
defs = env['BF_GL_DEFINITIONS']
|
||||
if env['WITH_BF_GLEW_MX']:
|
||||
defs += ['GLEW_MX']
|
||||
incs = ['include']
|
||||
|
||||
env.BlenderLib ( 'extern_glew_es', sources, incs, defs, libtype=['extern','player'], priority=[50,230] )
|
1470
extern/glew-es/include/GL/eglew.h
vendored
Normal file
1470
extern/glew-es/include/GL/eglew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4318
extern/glew-es/include/GL/glesew.h
vendored
Normal file
4318
extern/glew-es/include/GL/glesew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
20525
extern/glew-es/include/GL/glew.h
vendored
Normal file
20525
extern/glew-es/include/GL/glew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1649
extern/glew-es/include/GL/glxew.h
vendored
Normal file
1649
extern/glew-es/include/GL/glxew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1424
extern/glew-es/include/GL/wglew.h
vendored
Normal file
1424
extern/glew-es/include/GL/wglew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
22401
extern/glew-es/src/glew.c
vendored
Normal file
22401
extern/glew-es/src/glew.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6
extern/glew/CMakeLists.txt
vendored
6
extern/glew/CMakeLists.txt
vendored
@@ -45,6 +45,10 @@ set(SRC
|
||||
include/GL/wglew.h
|
||||
)
|
||||
|
||||
add_definitions(-DGLEW_STATIC)
|
||||
add_definitions(${GL_DEFINITIONS})
|
||||
|
||||
if(WITH_GLEW_MX)
|
||||
add_definitions(-DGLEW_MX)
|
||||
endif()
|
||||
|
||||
blender_add_lib(extern_glew "${SRC}" "${INC}" "${INC_SYS}")
|
||||
|
9
extern/glew/SConscript
vendored
9
extern/glew/SConscript
vendored
@@ -6,7 +6,10 @@ Import('env')
|
||||
|
||||
sources = ['src/glew.c']
|
||||
|
||||
defs = 'GLEW_STATIC'
|
||||
incs = 'include'
|
||||
defs = env['BF_GL_DEFINITIONS']
|
||||
if env['WITH_BF_GLEW_MX']:
|
||||
defs += ['GLEW_MX']
|
||||
|
||||
env.BlenderLib ( 'extern_glew', sources, Split(incs), Split(defs), libtype=['extern','player'], priority=[50,230])
|
||||
incs = ['include']
|
||||
|
||||
env.BlenderLib ( 'extern_glew', sources, incs, defs, libtype=['extern','player'], priority=[50,230] )
|
||||
|
2496
extern/glew/include/GL/glew.h
vendored
2496
extern/glew/include/GL/glew.h
vendored
File diff suppressed because it is too large
Load Diff
432
extern/glew/include/GL/glxew.h
vendored
432
extern/glew/include/GL/glxew.h
vendored
@@ -362,6 +362,26 @@ extern void ( * glXGetProcAddress (const GLubyte *procName)) (void);
|
||||
#define GLX_GPU_NUM_RB_AMD 0x21A7
|
||||
#define GLX_GPU_NUM_SPI_AMD 0x21A8
|
||||
|
||||
typedef void ( * PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC) (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC) (unsigned int id, GLXContext share_list);
|
||||
typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (unsigned int id, GLXContext share_context, const int* attribList);
|
||||
typedef Bool ( * PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC) (GLXContext ctx);
|
||||
typedef unsigned int ( * PFNGLXGETCONTEXTGPUIDAMDPROC) (GLXContext ctx);
|
||||
typedef GLXContext ( * PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
|
||||
typedef unsigned int ( * PFNGLXGETGPUIDSAMDPROC) (unsigned int maxCount, unsigned int* ids);
|
||||
typedef int ( * PFNGLXGETGPUINFOAMDPROC) (unsigned int id, int property, GLenum dataType, unsigned int size, void* data);
|
||||
typedef Bool ( * PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (GLXContext ctx);
|
||||
|
||||
#define glXBlitContextFramebufferAMD GLXEW_GET_FUN(__glewXBlitContextFramebufferAMD)
|
||||
#define glXCreateAssociatedContextAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAMD)
|
||||
#define glXCreateAssociatedContextAttribsAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAttribsAMD)
|
||||
#define glXDeleteAssociatedContextAMD GLXEW_GET_FUN(__glewXDeleteAssociatedContextAMD)
|
||||
#define glXGetContextGPUIDAMD GLXEW_GET_FUN(__glewXGetContextGPUIDAMD)
|
||||
#define glXGetCurrentAssociatedContextAMD GLXEW_GET_FUN(__glewXGetCurrentAssociatedContextAMD)
|
||||
#define glXGetGPUIDsAMD GLXEW_GET_FUN(__glewXGetGPUIDsAMD)
|
||||
#define glXGetGPUInfoAMD GLXEW_GET_FUN(__glewXGetGPUInfoAMD)
|
||||
#define glXMakeAssociatedContextCurrentAMD GLXEW_GET_FUN(__glewXMakeAssociatedContextCurrentAMD)
|
||||
|
||||
#define GLXEW_AMD_gpu_association GLXEW_GET_VAR(__GLXEW_AMD_gpu_association)
|
||||
|
||||
#endif /* GLX_AMD_gpu_association */
|
||||
@@ -458,6 +478,28 @@ extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void);
|
||||
|
||||
#endif /* GLX_ARB_multisample */
|
||||
|
||||
/* ---------------- GLX_ARB_robustness_application_isolation --------------- */
|
||||
|
||||
#ifndef GLX_ARB_robustness_application_isolation
|
||||
#define GLX_ARB_robustness_application_isolation 1
|
||||
|
||||
#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
|
||||
|
||||
#define GLXEW_ARB_robustness_application_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_application_isolation)
|
||||
|
||||
#endif /* GLX_ARB_robustness_application_isolation */
|
||||
|
||||
/* ---------------- GLX_ARB_robustness_share_group_isolation --------------- */
|
||||
|
||||
#ifndef GLX_ARB_robustness_share_group_isolation
|
||||
#define GLX_ARB_robustness_share_group_isolation 1
|
||||
|
||||
#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
|
||||
|
||||
#define GLXEW_ARB_robustness_share_group_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_share_group_isolation)
|
||||
|
||||
#endif /* GLX_ARB_robustness_share_group_isolation */
|
||||
|
||||
/* ---------------------- GLX_ARB_vertex_buffer_object --------------------- */
|
||||
|
||||
#ifndef GLX_ARB_vertex_buffer_object
|
||||
@@ -533,6 +575,17 @@ typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, i
|
||||
|
||||
#endif /* GLX_ATI_render_texture */
|
||||
|
||||
/* --------------------------- GLX_EXT_buffer_age -------------------------- */
|
||||
|
||||
#ifndef GLX_EXT_buffer_age
|
||||
#define GLX_EXT_buffer_age 1
|
||||
|
||||
#define GLX_BACK_BUFFER_AGE_EXT 0x20F4
|
||||
|
||||
#define GLXEW_EXT_buffer_age GLXEW_GET_VAR(__GLXEW_EXT_buffer_age)
|
||||
|
||||
#endif /* GLX_EXT_buffer_age */
|
||||
|
||||
/* ------------------- GLX_EXT_create_context_es2_profile ------------------ */
|
||||
|
||||
#ifndef GLX_EXT_create_context_es2_profile
|
||||
@@ -544,6 +597,17 @@ typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, i
|
||||
|
||||
#endif /* GLX_EXT_create_context_es2_profile */
|
||||
|
||||
/* ------------------- GLX_EXT_create_context_es_profile ------------------- */
|
||||
|
||||
#ifndef GLX_EXT_create_context_es_profile
|
||||
#define GLX_EXT_create_context_es_profile 1
|
||||
|
||||
#define GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
|
||||
|
||||
#define GLXEW_EXT_create_context_es_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es_profile)
|
||||
|
||||
#endif /* GLX_EXT_create_context_es_profile */
|
||||
|
||||
/* --------------------- GLX_EXT_fbconfig_packed_float --------------------- */
|
||||
|
||||
#ifndef GLX_EXT_fbconfig_packed_float
|
||||
@@ -617,6 +681,17 @@ typedef void ( * PFNGLXSWAPINTERVALEXTPROC) (Display* dpy, GLXDrawable drawable,
|
||||
|
||||
#endif /* GLX_EXT_swap_control */
|
||||
|
||||
/* ----------------------- GLX_EXT_swap_control_tear ----------------------- */
|
||||
|
||||
#ifndef GLX_EXT_swap_control_tear
|
||||
#define GLX_EXT_swap_control_tear 1
|
||||
|
||||
#define GLX_LATE_SWAPS_TEAR_EXT 0x20F3
|
||||
|
||||
#define GLXEW_EXT_swap_control_tear GLXEW_GET_VAR(__GLXEW_EXT_swap_control_tear)
|
||||
|
||||
#endif /* GLX_EXT_swap_control_tear */
|
||||
|
||||
/* ---------------------- GLX_EXT_texture_from_pixmap ---------------------- */
|
||||
|
||||
#ifndef GLX_EXT_texture_from_pixmap
|
||||
@@ -1003,16 +1078,6 @@ typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, i
|
||||
#ifndef GLX_SGIS_color_range
|
||||
#define GLX_SGIS_color_range 1
|
||||
|
||||
#define GLX_MIN_RED_SGIS 0
|
||||
#define GLX_MAX_GREEN_SGIS 0
|
||||
#define GLX_MIN_BLUE_SGIS 0
|
||||
#define GLX_MAX_ALPHA_SGIS 0
|
||||
#define GLX_MIN_GREEN_SGIS 0
|
||||
#define GLX_MIN_ALPHA_SGIS 0
|
||||
#define GLX_MAX_RED_SGIS 0
|
||||
#define GLX_EXTENDED_RANGE_SGIS 0
|
||||
#define GLX_MAX_BLUE_SGIS 0
|
||||
|
||||
#define GLXEW_SGIS_color_range GLXEW_GET_VAR(__GLXEW_SGIS_color_range)
|
||||
|
||||
#endif /* GLX_SGIS_color_range */
|
||||
@@ -1349,207 +1414,224 @@ typedef int ( * PFNGLXVIDEORESIZESUNPROC) (Display* display, GLXDrawable window,
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef GLEW_MX
|
||||
#define GLXEW_EXPORT
|
||||
#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT
|
||||
#define GLXEW_VAR_EXPORT
|
||||
#else
|
||||
#define GLXEW_EXPORT extern
|
||||
#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT
|
||||
#define GLXEW_VAR_EXPORT GLEW_VAR_EXPORT
|
||||
#endif /* GLEW_MX */
|
||||
|
||||
extern PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay;
|
||||
|
||||
extern PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig;
|
||||
extern PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext;
|
||||
extern PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer;
|
||||
extern PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap;
|
||||
extern PFNGLXCREATEWINDOWPROC __glewXCreateWindow;
|
||||
extern PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer;
|
||||
extern PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap;
|
||||
extern PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow;
|
||||
extern PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable;
|
||||
extern PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib;
|
||||
extern PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs;
|
||||
extern PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent;
|
||||
extern PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig;
|
||||
extern PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent;
|
||||
extern PFNGLXQUERYCONTEXTPROC __glewXQueryContext;
|
||||
extern PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable;
|
||||
extern PFNGLXSELECTEVENTPROC __glewXSelectEvent;
|
||||
GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATEWINDOWPROC __glewXCreateWindow;
|
||||
GLXEW_FUN_EXPORT PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer;
|
||||
GLXEW_FUN_EXPORT PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap;
|
||||
GLXEW_FUN_EXPORT PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig;
|
||||
GLXEW_FUN_EXPORT PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTPROC __glewXQueryContext;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable;
|
||||
GLXEW_FUN_EXPORT PFNGLXSELECTEVENTPROC __glewXSelectEvent;
|
||||
|
||||
extern PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB;
|
||||
GLXEW_FUN_EXPORT PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC __glewXBlitContextFramebufferAMD;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC __glewXCreateAssociatedContextAMD;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __glewXCreateAssociatedContextAttribsAMD;
|
||||
GLXEW_FUN_EXPORT PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC __glewXDeleteAssociatedContextAMD;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETCONTEXTGPUIDAMDPROC __glewXGetContextGPUIDAMD;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC __glewXGetCurrentAssociatedContextAMD;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETGPUIDSAMDPROC __glewXGetGPUIDsAMD;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETGPUINFOAMDPROC __glewXGetGPUInfoAMD;
|
||||
GLXEW_FUN_EXPORT PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __glewXMakeAssociatedContextCurrentAMD;
|
||||
|
||||
extern PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI;
|
||||
extern PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI;
|
||||
extern PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB;
|
||||
|
||||
extern PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT;
|
||||
extern PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT;
|
||||
extern PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT;
|
||||
extern PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI;
|
||||
GLXEW_FUN_EXPORT PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI;
|
||||
GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI;
|
||||
|
||||
extern PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT;
|
||||
GLXEW_FUN_EXPORT PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT;
|
||||
GLXEW_FUN_EXPORT PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT;
|
||||
|
||||
extern PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT;
|
||||
extern PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT;
|
||||
GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT;
|
||||
|
||||
extern PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT;
|
||||
GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT;
|
||||
|
||||
extern PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA;
|
||||
|
||||
extern PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA;
|
||||
GLXEW_FUN_EXPORT PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA;
|
||||
|
||||
extern PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA;
|
||||
|
||||
extern PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA;
|
||||
GLXEW_FUN_EXPORT PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA;
|
||||
|
||||
extern PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA;
|
||||
extern PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA;
|
||||
GLXEW_FUN_EXPORT PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA;
|
||||
|
||||
extern PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA;
|
||||
GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA;
|
||||
|
||||
extern PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV;
|
||||
extern PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV;
|
||||
|
||||
extern PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV;
|
||||
extern PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV;
|
||||
extern PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV;
|
||||
extern PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV;
|
||||
extern PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV;
|
||||
extern PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV;
|
||||
|
||||
extern PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV;
|
||||
extern PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV;
|
||||
|
||||
extern PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV;
|
||||
extern PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV;
|
||||
extern PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV;
|
||||
extern PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV;
|
||||
extern PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV;
|
||||
|
||||
extern PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV;
|
||||
extern PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV;
|
||||
extern PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV;
|
||||
extern PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV;
|
||||
extern PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV;
|
||||
extern PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV;
|
||||
|
||||
extern PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML;
|
||||
extern PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML;
|
||||
extern PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML;
|
||||
extern PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML;
|
||||
extern PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV;
|
||||
|
||||
extern PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX;
|
||||
extern PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX;
|
||||
extern PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX;
|
||||
extern PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX;
|
||||
extern PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX;
|
||||
extern PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML;
|
||||
GLXEW_FUN_EXPORT PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML;
|
||||
GLXEW_FUN_EXPORT PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML;
|
||||
GLXEW_FUN_EXPORT PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML;
|
||||
|
||||
extern PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX;
|
||||
extern PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX;
|
||||
extern PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX;
|
||||
extern PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX;
|
||||
extern PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX;
|
||||
extern PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX;
|
||||
extern PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX;
|
||||
extern PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX;
|
||||
|
||||
extern PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX;
|
||||
extern PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX;
|
||||
extern PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX;
|
||||
extern PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX;
|
||||
extern PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX;
|
||||
|
||||
extern PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX;
|
||||
extern PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX;
|
||||
|
||||
extern PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX;
|
||||
|
||||
extern PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX;
|
||||
extern PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX;
|
||||
extern PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX;
|
||||
extern PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX;
|
||||
extern PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX;
|
||||
|
||||
extern PFNGLXCUSHIONSGIPROC __glewXCushionSGI;
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX;
|
||||
GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX;
|
||||
|
||||
extern PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI;
|
||||
extern PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI;
|
||||
GLXEW_FUN_EXPORT PFNGLXCUSHIONSGIPROC __glewXCushionSGI;
|
||||
|
||||
extern PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI;
|
||||
GLXEW_FUN_EXPORT PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI;
|
||||
|
||||
extern PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI;
|
||||
extern PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI;
|
||||
GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI;
|
||||
|
||||
extern PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI;
|
||||
GLXEW_FUN_EXPORT PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI;
|
||||
|
||||
extern PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN;
|
||||
extern PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN;
|
||||
GLXEW_FUN_EXPORT PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN;
|
||||
|
||||
GLXEW_FUN_EXPORT PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN;
|
||||
GLXEW_FUN_EXPORT PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN;
|
||||
|
||||
#if defined(GLEW_MX)
|
||||
struct GLXEWContextStruct
|
||||
{
|
||||
#endif /* GLEW_MX */
|
||||
|
||||
GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_0;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_1;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_2;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_3;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_4;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_3DFX_multisample;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_AMD_gpu_association;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context_profile;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context_robustness;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ARB_fbconfig_float;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ARB_get_proc_address;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ARB_multisample;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ATI_pixel_format_float;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_ATI_render_texture;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_create_context_es2_profile;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_import_context;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_scene_marker;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_swap_control;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_info;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_rating;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_INTEL_swap_event;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_MESA_agp_offset;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_MESA_release_buffers;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_MESA_swap_control;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_NV_copy_image;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_NV_float_buffer;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_NV_multisample_coverage;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_NV_present_video;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_NV_swap_group;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_NV_vertex_array_range;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_NV_video_capture;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_NV_video_output;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_OML_swap_method;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_OML_sync_control;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIS_blended_overlay;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIS_color_range;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIS_multisample;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIS_shared_multisample;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIX_fbconfig;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIX_hyperpipe;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIX_pbuffer;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIX_swap_barrier;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIX_swap_group;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIX_video_resize;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGIX_visual_select_group;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGI_cushion;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGI_make_current_read;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGI_swap_control;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SGI_video_sync;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SUN_get_transparent_index;
|
||||
GLXEW_EXPORT GLboolean __GLXEW_SUN_video_resize;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_0;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_1;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_2;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_3;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_4;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_3DFX_multisample;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_AMD_gpu_association;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_profile;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_robustness;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_fbconfig_float;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_get_proc_address;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_multisample;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_application_isolation;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_share_group_isolation;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_pixel_format_float;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_render_texture;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_buffer_age;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es2_profile;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es_profile;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_import_context;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_scene_marker;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control_tear;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_info;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_rating;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_INTEL_swap_event;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_agp_offset;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_release_buffers;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_swap_control;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_image;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_float_buffer;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multisample_coverage;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_present_video;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_swap_group;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_vertex_array_range;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_capture;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_output;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_swap_method;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_sync_control;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_blended_overlay;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_color_range;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_multisample;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_shared_multisample;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_fbconfig;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_hyperpipe;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_pbuffer;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_barrier;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_group;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_video_resize;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_visual_select_group;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_cushion;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_make_current_read;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_swap_control;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_video_sync;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_get_transparent_index;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_video_resize;
|
||||
|
||||
#ifdef GLEW_MX
|
||||
}; /* GLXEWContextStruct */
|
||||
@@ -1560,8 +1642,8 @@ GLXEW_EXPORT GLboolean __GLXEW_SUN_video_resize;
|
||||
#ifdef GLEW_MX
|
||||
|
||||
typedef struct GLXEWContextStruct GLXEWContext;
|
||||
extern GLenum glxewContextInit (GLXEWContext* ctx);
|
||||
extern GLboolean glxewContextIsSupported (const GLXEWContext* ctx, const char* name);
|
||||
GLEWAPI GLenum GLEWAPIENTRY glxewContextInit (GLXEWContext *ctx);
|
||||
GLEWAPI GLboolean GLEWAPIENTRY glxewContextIsSupported (const GLXEWContext *ctx, const char *name);
|
||||
|
||||
#define glxewInit() glxewContextInit(glxewGetContext())
|
||||
#define glxewIsSupported(x) glxewContextIsSupported(glxewGetContext(), x)
|
||||
@@ -1574,11 +1656,11 @@ extern GLboolean glxewContextIsSupported (const GLXEWContext* ctx, const char* n
|
||||
#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x)
|
||||
#define GLXEW_GET_FUN(x) x
|
||||
|
||||
extern GLboolean glxewIsSupported (const char* name);
|
||||
GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name);
|
||||
|
||||
#endif /* GLEW_MX */
|
||||
|
||||
extern GLboolean glxewGetExtension (const char* name);
|
||||
GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
400
extern/glew/include/GL/wglew.h
vendored
400
extern/glew/include/GL/wglew.h
vendored
@@ -446,6 +446,28 @@ typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, con
|
||||
|
||||
#endif /* WGL_ARB_render_texture */
|
||||
|
||||
/* ---------------- WGL_ARB_robustness_application_isolation --------------- */
|
||||
|
||||
#ifndef WGL_ARB_robustness_application_isolation
|
||||
#define WGL_ARB_robustness_application_isolation 1
|
||||
|
||||
#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
|
||||
|
||||
#define WGLEW_ARB_robustness_application_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_application_isolation)
|
||||
|
||||
#endif /* WGL_ARB_robustness_application_isolation */
|
||||
|
||||
/* ---------------- WGL_ARB_robustness_share_group_isolation --------------- */
|
||||
|
||||
#ifndef WGL_ARB_robustness_share_group_isolation
|
||||
#define WGL_ARB_robustness_share_group_isolation 1
|
||||
|
||||
#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
|
||||
|
||||
#define WGLEW_ARB_robustness_share_group_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_share_group_isolation)
|
||||
|
||||
#endif /* WGL_ARB_robustness_share_group_isolation */
|
||||
|
||||
/* ----------------------- WGL_ATI_pixel_format_float ---------------------- */
|
||||
|
||||
#ifndef WGL_ATI_pixel_format_float
|
||||
@@ -481,6 +503,17 @@ typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, con
|
||||
|
||||
#endif /* WGL_EXT_create_context_es2_profile */
|
||||
|
||||
/* ------------------- WGL_EXT_create_context_es_profile ------------------- */
|
||||
|
||||
#ifndef WGL_EXT_create_context_es_profile
|
||||
#define WGL_EXT_create_context_es_profile 1
|
||||
|
||||
#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
|
||||
|
||||
#define WGLEW_EXT_create_context_es_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es_profile)
|
||||
|
||||
#endif /* WGL_EXT_create_context_es_profile */
|
||||
|
||||
/* -------------------------- WGL_EXT_depth_float -------------------------- */
|
||||
|
||||
#ifndef WGL_EXT_depth_float
|
||||
@@ -686,6 +719,15 @@ typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
|
||||
|
||||
#endif /* WGL_EXT_swap_control */
|
||||
|
||||
/* ----------------------- WGL_EXT_swap_control_tear ----------------------- */
|
||||
|
||||
#ifndef WGL_EXT_swap_control_tear
|
||||
#define WGL_EXT_swap_control_tear 1
|
||||
|
||||
#define WGLEW_EXT_swap_control_tear WGLEW_GET_VAR(__WGLEW_EXT_swap_control_tear)
|
||||
|
||||
#endif /* WGL_EXT_swap_control_tear */
|
||||
|
||||
/* --------------------- WGL_I3D_digital_video_control --------------------- */
|
||||
|
||||
#ifndef WGL_I3D_digital_video_control
|
||||
@@ -864,6 +906,15 @@ typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE h
|
||||
|
||||
#endif /* WGL_NV_DX_interop */
|
||||
|
||||
/* --------------------------- WGL_NV_DX_interop2 -------------------------- */
|
||||
|
||||
#ifndef WGL_NV_DX_interop2
|
||||
#define WGL_NV_DX_interop2 1
|
||||
|
||||
#define WGLEW_NV_DX_interop2 WGLEW_GET_VAR(__WGLEW_NV_DX_interop2)
|
||||
|
||||
#endif /* WGL_NV_DX_interop2 */
|
||||
|
||||
/* --------------------------- WGL_NV_copy_image --------------------------- */
|
||||
|
||||
#ifndef WGL_NV_copy_image
|
||||
@@ -1120,9 +1171,11 @@ typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT6
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef GLEW_MX
|
||||
#define WGLEW_EXPORT
|
||||
#define WGLEW_FUN_EXPORT
|
||||
#define WGLEW_VAR_EXPORT
|
||||
#else
|
||||
#define WGLEW_EXPORT GLEWAPI
|
||||
#define WGLEW_FUN_EXPORT GLEW_FUN_EXPORT
|
||||
#define WGLEW_VAR_EXPORT GLEW_VAR_EXPORT
|
||||
#endif /* GLEW_MX */
|
||||
|
||||
#ifdef GLEW_MX
|
||||
@@ -1130,200 +1183,205 @@ struct WGLEWContextStruct
|
||||
{
|
||||
#endif /* GLEW_MX */
|
||||
|
||||
WGLEW_EXPORT PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL;
|
||||
WGLEW_FUN_EXPORT PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL;
|
||||
|
||||
WGLEW_EXPORT PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD;
|
||||
WGLEW_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD;
|
||||
WGLEW_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD;
|
||||
WGLEW_EXPORT PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD;
|
||||
WGLEW_EXPORT PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD;
|
||||
WGLEW_EXPORT PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD;
|
||||
WGLEW_EXPORT PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD;
|
||||
WGLEW_EXPORT PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD;
|
||||
WGLEW_EXPORT PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD;
|
||||
WGLEW_FUN_EXPORT PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD;
|
||||
|
||||
WGLEW_EXPORT PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB;
|
||||
WGLEW_EXPORT PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB;
|
||||
WGLEW_EXPORT PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB;
|
||||
WGLEW_EXPORT PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB;
|
||||
|
||||
WGLEW_EXPORT PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB;
|
||||
|
||||
WGLEW_EXPORT PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB;
|
||||
|
||||
WGLEW_EXPORT PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB;
|
||||
WGLEW_EXPORT PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB;
|
||||
|
||||
WGLEW_EXPORT PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB;
|
||||
WGLEW_EXPORT PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB;
|
||||
WGLEW_EXPORT PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB;
|
||||
WGLEW_EXPORT PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB;
|
||||
WGLEW_EXPORT PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB;
|
||||
|
||||
WGLEW_EXPORT PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB;
|
||||
WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB;
|
||||
WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB;
|
||||
|
||||
WGLEW_EXPORT PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB;
|
||||
WGLEW_EXPORT PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB;
|
||||
WGLEW_EXPORT PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB;
|
||||
WGLEW_FUN_EXPORT PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB;
|
||||
|
||||
WGLEW_EXPORT PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT;
|
||||
WGLEW_EXPORT PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT;
|
||||
WGLEW_EXPORT PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT;
|
||||
WGLEW_EXPORT PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT;
|
||||
|
||||
WGLEW_EXPORT PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT;
|
||||
|
||||
WGLEW_EXPORT PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT;
|
||||
WGLEW_EXPORT PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT;
|
||||
|
||||
WGLEW_EXPORT PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT;
|
||||
WGLEW_EXPORT PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT;
|
||||
WGLEW_EXPORT PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT;
|
||||
WGLEW_EXPORT PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT;
|
||||
WGLEW_EXPORT PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT;
|
||||
|
||||
WGLEW_EXPORT PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT;
|
||||
WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT;
|
||||
WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT;
|
||||
|
||||
WGLEW_EXPORT PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT;
|
||||
WGLEW_EXPORT PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT;
|
||||
WGLEW_FUN_EXPORT PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT;
|
||||
|
||||
WGLEW_EXPORT PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D;
|
||||
WGLEW_EXPORT PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D;
|
||||
|
||||
WGLEW_EXPORT PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D;
|
||||
WGLEW_EXPORT PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D;
|
||||
WGLEW_EXPORT PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D;
|
||||
WGLEW_EXPORT PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D;
|
||||
|
||||
WGLEW_EXPORT PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D;
|
||||
WGLEW_EXPORT PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D;
|
||||
WGLEW_EXPORT PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D;
|
||||
WGLEW_EXPORT PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D;
|
||||
WGLEW_EXPORT PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D;
|
||||
WGLEW_EXPORT PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D;
|
||||
WGLEW_EXPORT PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D;
|
||||
WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D;
|
||||
WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D;
|
||||
WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D;
|
||||
WGLEW_EXPORT PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D;
|
||||
WGLEW_EXPORT PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D;
|
||||
|
||||
WGLEW_EXPORT PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D;
|
||||
WGLEW_EXPORT PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D;
|
||||
WGLEW_EXPORT PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D;
|
||||
WGLEW_EXPORT PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D;
|
||||
|
||||
WGLEW_EXPORT PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D;
|
||||
WGLEW_EXPORT PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D;
|
||||
WGLEW_EXPORT PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D;
|
||||
WGLEW_EXPORT PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D;
|
||||
|
||||
WGLEW_EXPORT PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D;
|
||||
WGLEW_EXPORT PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D;
|
||||
WGLEW_EXPORT PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D;
|
||||
WGLEW_EXPORT PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D;
|
||||
|
||||
WGLEW_EXPORT PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV;
|
||||
WGLEW_EXPORT PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV;
|
||||
WGLEW_EXPORT PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV;
|
||||
WGLEW_EXPORT PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV;
|
||||
WGLEW_EXPORT PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV;
|
||||
WGLEW_EXPORT PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV;
|
||||
WGLEW_EXPORT PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV;
|
||||
WGLEW_EXPORT PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV;
|
||||
|
||||
WGLEW_EXPORT PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV;
|
||||
|
||||
WGLEW_EXPORT PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV;
|
||||
WGLEW_EXPORT PFNWGLDELETEDCNVPROC __wglewDeleteDCNV;
|
||||
WGLEW_EXPORT PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV;
|
||||
WGLEW_EXPORT PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV;
|
||||
WGLEW_EXPORT PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLDELETEDCNVPROC __wglewDeleteDCNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV;
|
||||
|
||||
WGLEW_EXPORT PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV;
|
||||
WGLEW_EXPORT PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV;
|
||||
WGLEW_EXPORT PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV;
|
||||
|
||||
WGLEW_EXPORT PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV;
|
||||
WGLEW_EXPORT PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV;
|
||||
WGLEW_EXPORT PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV;
|
||||
WGLEW_EXPORT PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV;
|
||||
WGLEW_EXPORT PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV;
|
||||
WGLEW_EXPORT PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV;
|
||||
|
||||
WGLEW_EXPORT PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV;
|
||||
WGLEW_EXPORT PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV;
|
||||
|
||||
WGLEW_EXPORT PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV;
|
||||
WGLEW_EXPORT PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV;
|
||||
WGLEW_EXPORT PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV;
|
||||
WGLEW_EXPORT PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV;
|
||||
WGLEW_EXPORT PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV;
|
||||
|
||||
WGLEW_EXPORT PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV;
|
||||
WGLEW_EXPORT PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV;
|
||||
WGLEW_EXPORT PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV;
|
||||
WGLEW_EXPORT PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV;
|
||||
WGLEW_EXPORT PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV;
|
||||
WGLEW_EXPORT PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV;
|
||||
WGLEW_FUN_EXPORT PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV;
|
||||
|
||||
WGLEW_EXPORT PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML;
|
||||
WGLEW_EXPORT PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML;
|
||||
WGLEW_EXPORT PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML;
|
||||
WGLEW_EXPORT PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML;
|
||||
WGLEW_EXPORT PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML;
|
||||
WGLEW_EXPORT PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_3DFX_multisample;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_3DL_stereo_control;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_AMD_gpu_association;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_buffer_region;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context_profile;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context_robustness;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_extensions_string;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_framebuffer_sRGB;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_make_current_read;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_multisample;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_pbuffer;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_pixel_format;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_pixel_format_float;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ARB_render_texture;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ATI_pixel_format_float;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_ATI_render_texture_rectangle;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_create_context_es2_profile;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_depth_float;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_display_color_table;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_extensions_string;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_framebuffer_sRGB;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_make_current_read;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_multisample;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_pbuffer;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_pixel_format;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_pixel_format_packed_float;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_EXT_swap_control;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_I3D_digital_video_control;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_I3D_gamma;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_I3D_genlock;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_I3D_image_buffer;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_I3D_swap_frame_lock;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_I3D_swap_frame_usage;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_DX_interop;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_copy_image;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_float_buffer;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_gpu_affinity;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_multisample_coverage;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_present_video;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_render_depth_texture;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_render_texture_rectangle;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_swap_group;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_vertex_array_range;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_video_capture;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_NV_video_output;
|
||||
WGLEW_EXPORT GLboolean __WGLEW_OML_sync_control;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML;
|
||||
WGLEW_FUN_EXPORT PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML;
|
||||
WGLEW_FUN_EXPORT PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML;
|
||||
WGLEW_FUN_EXPORT PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML;
|
||||
WGLEW_FUN_EXPORT PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML;
|
||||
WGLEW_FUN_EXPORT PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_3DFX_multisample;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_3DL_stereo_control;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_AMD_gpu_association;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_buffer_region;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_profile;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_robustness;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_extensions_string;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_framebuffer_sRGB;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_make_current_read;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_multisample;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pbuffer;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format_float;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_render_texture;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_application_isolation;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_share_group_isolation;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_pixel_format_float;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_render_texture_rectangle;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es2_profile;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es_profile;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_depth_float;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_display_color_table;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_extensions_string;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_framebuffer_sRGB;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_make_current_read;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_multisample;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pbuffer;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format_packed_float;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control_tear;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_digital_video_control;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_gamma;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_genlock;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_image_buffer;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_lock;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_usage;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop2;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_copy_image;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_float_buffer;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_gpu_affinity;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_multisample_coverage;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_present_video;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_depth_texture;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_texture_rectangle;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_swap_group;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_vertex_array_range;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_capture;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_output;
|
||||
WGLEW_VAR_EXPORT GLboolean __WGLEW_OML_sync_control;
|
||||
|
||||
#ifdef GLEW_MX
|
||||
}; /* WGLEWContextStruct */
|
||||
@@ -1334,8 +1392,8 @@ WGLEW_EXPORT GLboolean __WGLEW_OML_sync_control;
|
||||
#ifdef GLEW_MX
|
||||
|
||||
typedef struct WGLEWContextStruct WGLEWContext;
|
||||
GLEWAPI GLenum wglewContextInit (WGLEWContext* ctx);
|
||||
GLEWAPI GLboolean wglewContextIsSupported (const WGLEWContext* ctx, const char* name);
|
||||
GLEWAPI GLenum GLEWAPIENTRY wglewContextInit (WGLEWContext *ctx);
|
||||
GLEWAPI GLboolean GLEWAPIENTRY wglewContextIsSupported (const WGLEWContext *ctx, const char *name);
|
||||
|
||||
#define wglewInit() wglewContextInit(wglewGetContext())
|
||||
#define wglewIsSupported(x) wglewContextIsSupported(wglewGetContext(), x)
|
||||
@@ -1348,11 +1406,11 @@ GLEWAPI GLboolean wglewContextIsSupported (const WGLEWContext* ctx, const char*
|
||||
#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x)
|
||||
#define WGLEW_GET_FUN(x) x
|
||||
|
||||
GLEWAPI GLboolean wglewIsSupported (const char* name);
|
||||
GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name);
|
||||
|
||||
#endif /* GLEW_MX */
|
||||
|
||||
GLEWAPI GLboolean wglewGetExtension (const char* name);
|
||||
GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
2312
extern/glew/src/glew.c
vendored
2312
extern/glew/src/glew.c
vendored
File diff suppressed because it is too large
Load Diff
50
extern/libmv/CMakeLists.txt
vendored
50
extern/libmv/CMakeLists.txt
vendored
@@ -35,12 +35,10 @@ set(INC_SYS
|
||||
|
||||
set(SRC
|
||||
libmv-capi.h
|
||||
libmv-capi_intern.h
|
||||
)
|
||||
|
||||
if(WITH_LIBMV)
|
||||
add_definitions(
|
||||
-DWITH_LIBMV
|
||||
-DWITH_LIBMV_GUARDED_ALLOC
|
||||
-DGOOGLE_GLOG_DLL_DECL=
|
||||
-DLIBMV_NO_FAST_DETECTOR=
|
||||
@@ -66,15 +64,27 @@ if(WITH_LIBMV)
|
||||
../../intern/guardedalloc
|
||||
)
|
||||
|
||||
set(INC_SYS
|
||||
list(APPEND INC_SYS
|
||||
../Eigen3
|
||||
${PNG_INCLUDE_DIRS}
|
||||
${ZLIB_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
list(APPEND SRC
|
||||
libmv-capi.cc
|
||||
libmv-util.cc
|
||||
intern/autotrack.cc
|
||||
intern/camera_intrinsics.cc
|
||||
intern/detector.cc
|
||||
intern/frame_accessor.cc
|
||||
intern/homography.cc
|
||||
intern/image.cc
|
||||
intern/logging.cc
|
||||
intern/reconstruction.cc
|
||||
intern/track_region.cc
|
||||
intern/tracks.cc
|
||||
intern/tracksN.cc
|
||||
libmv/autotrack/autotrack.cc
|
||||
libmv/autotrack/predict_tracks.cc
|
||||
libmv/autotrack/tracks.cc
|
||||
libmv/base/aligned_malloc.cc
|
||||
libmv/image/array_nd.cc
|
||||
libmv/image/convolve.cc
|
||||
@@ -109,7 +119,28 @@ if(WITH_LIBMV)
|
||||
libmv/tracking/track_region.cc
|
||||
libmv/tracking/trklt_region_tracker.cc
|
||||
|
||||
libmv-util.h
|
||||
|
||||
intern/autotrack.h
|
||||
intern/camera_intrinsics.h
|
||||
intern/detector.h
|
||||
intern/frame_accessor.h
|
||||
intern/homography.h
|
||||
intern/image.h
|
||||
intern/logging.h
|
||||
intern/reconstruction.h
|
||||
intern/track_region.h
|
||||
intern/tracks.h
|
||||
intern/tracksN.h
|
||||
libmv/autotrack/autotrack.h
|
||||
libmv/autotrack/callbacks.h
|
||||
libmv/autotrack/frame_accessor.h
|
||||
libmv/autotrack/marker.h
|
||||
libmv/autotrack/model.h
|
||||
libmv/autotrack/predict_tracks.h
|
||||
libmv/autotrack/quad.h
|
||||
libmv/autotrack/reconstruction.h
|
||||
libmv/autotrack/region.h
|
||||
libmv/autotrack/tracks.h
|
||||
libmv/base/aligned_malloc.h
|
||||
libmv/base/id_generator.h
|
||||
libmv/base/scoped_ptr.h
|
||||
@@ -159,6 +190,7 @@ if(WITH_LIBMV)
|
||||
libmv/simple_pipeline/tracks.h
|
||||
libmv/tracking/brute_region_tracker.h
|
||||
libmv/tracking/hybrid_region_tracker.h
|
||||
libmv/tracking/kalman_filter.h
|
||||
libmv/tracking/klt_region_tracker.h
|
||||
libmv/tracking/pyramid_region_tracker.h
|
||||
libmv/tracking/region_tracker.h
|
||||
@@ -185,6 +217,8 @@ if(WITH_LIBMV)
|
||||
if(WITH_GTESTS)
|
||||
blender_add_lib(libmv_test_dataset "./libmv/multiview/test_data_sets.cc" "" "")
|
||||
|
||||
BLENDER_SRC_GTEST("libmv_predict_tracks" "./libmv/autotrack/predict_tracks_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
|
||||
BLENDER_SRC_GTEST("libmv_tracks" "./libmv/autotrack/tracks_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
|
||||
BLENDER_SRC_GTEST("libmv_scoped_ptr" "./libmv/base/scoped_ptr_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
|
||||
BLENDER_SRC_GTEST("libmv_vector" "./libmv/base/vector_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
|
||||
BLENDER_SRC_GTEST("libmv_array_nd" "./libmv/image/array_nd_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
|
||||
@@ -217,7 +251,7 @@ if(WITH_LIBMV)
|
||||
endif()
|
||||
else()
|
||||
list(APPEND SRC
|
||||
libmv-capi_stub.cc
|
||||
intern/stub.cc
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -228,7 +262,7 @@ if(WITH_LIBMV)
|
||||
endif()
|
||||
|
||||
# make GLog a separate target, so it can be used for gtest as well.
|
||||
if(WITH_LIBMV OR WITH_GTESTS)
|
||||
if(WITH_LIBMV OR WITH_GTESTS OR WITH_CYCLES_LOGGING)
|
||||
# We compile GLog together with GFlag so we don't worry about
|
||||
# adding extra lib to linker.
|
||||
set(GLOG_SRC
|
||||
|
701
extern/libmv/ChangeLog
vendored
701
extern/libmv/ChangeLog
vendored
@@ -1,3 +1,365 @@
|
||||
commit d976e034cdf74b34860e0632d7b29713f47c5756
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Sat Aug 23 00:38:01 2014 -0700
|
||||
|
||||
Minor keyframe selection cleanups
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D757
|
||||
|
||||
commit bc99ca55dadfca89fde0f93764397c2fe028943d
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Sat Aug 23 01:55:32 2014 +0600
|
||||
|
||||
implement backward prediction
|
||||
|
||||
The title actually says it all, just extend current implementation
|
||||
of PredictMarkerPosition() to cases when tracking happens in the reverse
|
||||
order (from the end frame to start).
|
||||
|
||||
it's still doesn't solve all the ambiguity happening in the function
|
||||
in cases when one tracks the feature and then re-tracks it in order
|
||||
to refine the sliding. This is considered a separate TODO for now and
|
||||
will likely be solved by passing tracking direction to the prediction
|
||||
function.
|
||||
|
||||
Reviewers: keir
|
||||
|
||||
Reviewed By: keir
|
||||
|
||||
Differential Revision: https://developer.blender.org/D663
|
||||
|
||||
commit 5b87682d98df65ade02638bc6482d824cf0dd0b3
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Thu Aug 21 22:45:22 2014 -0700
|
||||
|
||||
Make libmv compile on Ubuntu 14.04
|
||||
|
||||
Reviewers: fsiddi
|
||||
|
||||
Reviewed By: fsiddi
|
||||
|
||||
Subscribers: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D755
|
||||
|
||||
commit 0a81db623c458e0384b4f7060d1bcff8993fb469
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed Jul 23 00:42:00 2014 +0600
|
||||
|
||||
Fix wrong residual blocks counter
|
||||
|
||||
This happened in cases when having zero-weighted tracks
|
||||
and could lead to some assert failures on marking parameter
|
||||
block constant.
|
||||
|
||||
commit 2824dbac54cacf74828678be7a5c9fd960ce83e2
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Fri Jul 18 12:52:03 2014 +0600
|
||||
|
||||
Fix search area sliding issue
|
||||
|
||||
The only way to do this is to store search region in floats
|
||||
and round when we need to sample it. Otherwise you'll always
|
||||
have sliding effect caused by rounding the issues, especially
|
||||
when doing incremental offset (thing which happens in the
|
||||
prediction code).
|
||||
|
||||
Pretty much straightforward change apart from stuff to be kept
|
||||
in mind: offset calculation int should happen relative to the
|
||||
rounded search region. This is because tracker works in the space
|
||||
of the search window image which get's rounded on the frame access,
|
||||
|
||||
This makes API a bit creepy because frame accessor uses the same
|
||||
Region struct as the search window in Marker and ideally we would
|
||||
need to have either IntRegion or Region<int> in order to make
|
||||
Libmv fully track on what's getting rounded and when.
|
||||
|
||||
Reviewers: keir
|
||||
|
||||
Reviewed By: keir
|
||||
|
||||
Differential Revision: https://developer.blender.org/D616
|
||||
|
||||
commit 04862c479332308be47a0f27361402444ace8880
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Fri May 9 23:00:03 2014 +0200
|
||||
|
||||
Start the automatic 2D tracking code
|
||||
|
||||
This starts the 2D automatic tracking code. It is totally unfinished.
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D523
|
||||
|
||||
commit be679f67d807a2139c1f7d7e2ca45141940b30d5
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Fri May 9 14:36:04 2014 +0200
|
||||
|
||||
Also shift the search window
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D520
|
||||
|
||||
commit 66b8f5eef2633ebcde32a388fc14c60171011821
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Fri May 9 13:06:28 2014 +0200
|
||||
|
||||
Change the search region to absolute frame coordinates
|
||||
|
||||
Smarter Eigen usage
|
||||
|
||||
Better error logging
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D519
|
||||
|
||||
commit a08193319ae409fad8f08887eae1f79f02e91eaa
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Fri May 9 12:02:47 2014 +0200
|
||||
|
||||
First cut at predictive tracing
|
||||
|
||||
This adds a Kalman filter-based approach to predict where a marker
|
||||
will go in the next frame to track. Hopefully this will make the
|
||||
tracker work faster by avoiding lengthy searches. This code
|
||||
compiles, but is otherwise untested, and likely does not work.
|
||||
|
||||
Fix else branch
|
||||
|
||||
Add some tests
|
||||
|
||||
Update patch coordinates as well (and test)
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D518
|
||||
|
||||
commit 607ffb2f62b56e34a841abbb952d83e19cd1e23c
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Thu May 8 16:05:28 2014 +0200
|
||||
|
||||
Add constructor to AutoTrack
|
||||
|
||||
commit c39e20a0c27da3733804c3848454b5d4c4f0e66b
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Thu May 8 16:04:20 2014 +0200
|
||||
|
||||
Fix GetMarker compilation issue
|
||||
|
||||
commit 8dd93e431b6e44439c803bfd26ec2669b656177e
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Thu May 8 15:50:26 2014 +0200
|
||||
|
||||
Expose GetMarker() in AutoTrack
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D516
|
||||
|
||||
commit 4405dff60ea08d454b64da1a7c0595d9328cf8a3
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Thu May 8 15:38:14 2014 +0200
|
||||
|
||||
Add public SetMarkers to AutoTrack
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D515
|
||||
|
||||
commit c90837f6db276a3b1f610eaad509155f6a43b24f
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Thu May 8 15:17:48 2014 +0200
|
||||
|
||||
Make autotrack skeleton compile
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D514
|
||||
|
||||
commit be01baa2e82e36f63e548f073157e68d2ff870c0
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Wed May 7 18:48:55 2014 +0200
|
||||
|
||||
Add preliminary TrackMarkerToFrame in autotrack
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D509
|
||||
|
||||
commit 0cab028d591b3d08672ca86eb6c6e4ac1aacf1d0
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed May 7 17:59:11 2014 +0200
|
||||
|
||||
Remove assert from ArrayND Resize
|
||||
|
||||
That assert broke initialization of arrays which doesn't
|
||||
own the data since constructor uses Resize to set shape
|
||||
and strides.
|
||||
|
||||
Strides are still to be fixed, but that's for later.
|
||||
|
||||
commit 64f9c118029a9351e9023e96527c120e1d724d5b
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed May 7 17:42:21 2014 +0200
|
||||
|
||||
Fix ArrayND freeing the data it doesn't own
|
||||
|
||||
Can't really guarantee it works fully correct now,
|
||||
but at least this check is needed anyway and compilation
|
||||
works just fine.
|
||||
|
||||
Reviewers: keir
|
||||
|
||||
Reviewed By: keir
|
||||
|
||||
Differential Revision: https://developer.blender.org/D508
|
||||
|
||||
commit 0618f1c8e88dfc738cdde55784da80b889905e7c
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Wed May 7 12:03:32 2014 +0200
|
||||
|
||||
Minor changes
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D505
|
||||
|
||||
commit 5c34335e1bb90c4ed701ee830c718ed4e20dbffa
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed May 7 11:12:23 2014 +0200
|
||||
|
||||
Fix compilation error in frame accessor
|
||||
|
||||
- int64 is not a standard type, we've got int64_t defined in
|
||||
std int. We also have an msvc port of this header, so should
|
||||
not be an issue.
|
||||
|
||||
- Fixed inconsistency in usage of CacheKey and Key, used Key.
|
||||
|
||||
- Some functions weren't marked as virtual.
|
||||
|
||||
Additional change: added self to authors.
|
||||
|
||||
Reviewers: keir
|
||||
|
||||
Reviewed By: keir
|
||||
|
||||
Differential Revision: https://developer.blender.org/D504
|
||||
|
||||
commit 06bc207614e262cd688e2c3ed820ade7c77bdb66
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Tue May 6 22:30:59 2014 +0200
|
||||
|
||||
Start new Tracks implementation
|
||||
|
||||
This adds the new Tracks implementation, as well as a
|
||||
trivial test to show it compiles.
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D502
|
||||
|
||||
commit 25ce061e6da69881460ba7718bb0d660a2380a02
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Tue May 6 19:10:51 2014 +0200
|
||||
|
||||
Add Reconstruction class for new API
|
||||
|
||||
This starts the new Reconstruction class (with support for e.g. planes). This
|
||||
also starts the new namespace "mv" which will eventually have all the symbols
|
||||
we wish to export.
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D501
|
||||
|
||||
commit 0a6af3e29016048978aea607673340500e050339
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Tue May 6 17:52:53 2014 +0200
|
||||
|
||||
Add a new Tracks implementation
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D500
|
||||
|
||||
commit 887b68d29c2b198f4939f9ab5153881aa2c1806e
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Tue May 6 17:01:39 2014 +0200
|
||||
|
||||
Initial commit of unfinished AutoTrack API
|
||||
|
||||
This starts the creating the new AutoTrack API. The new API will
|
||||
make it possible for libmv to do full autotracking, including
|
||||
predictive tracking and also support multiple motion models (3D
|
||||
planes etc).
|
||||
|
||||
The first goal (not in this patch) is to convert Blender to use
|
||||
the new API without adding any new functionality.
|
||||
|
||||
Note: This does not add any of the API to the build system!
|
||||
It likely does not compile.
|
||||
|
||||
Reviewers: sergey
|
||||
|
||||
Reviewed By: sergey
|
||||
|
||||
Differential Revision: https://developer.blender.org/D499
|
||||
|
||||
commit 08cc227d431d257d27f300fbb8e6991e663302da
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue May 6 13:09:22 2014 +0200
|
||||
|
||||
Fix homography test failure
|
||||
|
||||
It was caused by assuming that reconstructed homography matrix
|
||||
should look exactly the same as the matrix used to generate a
|
||||
test case.
|
||||
|
||||
It's not actually valid assumption because different-looking
|
||||
matrices could correspond to the same exact transform.
|
||||
|
||||
In this change we make it so actual "re-projected" vectors
|
||||
are being checked, not the values in matrix. This makes it
|
||||
more predictable verification.
|
||||
|
||||
Reviewers: keir
|
||||
|
||||
Reviewed By: keir
|
||||
|
||||
Differential Revision: https://developer.blender.org/D488
|
||||
|
||||
commit 0b7d83dc9627447dc7df64d7e3a468aefe9ddc13
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed Apr 23 19:14:55 2014 +0600
|
||||
@@ -338,342 +700,3 @@ Date: Thu Feb 13 23:55:03 2014 +0600
|
||||
|
||||
Actually we're to switch to external Ceres rather than
|
||||
bundled one, would make life much easier actually.
|
||||
|
||||
commit b1381540305d69c702eb2f051bd543fb5c1c3e2c
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Thu Feb 6 18:01:58 2014 +0600
|
||||
|
||||
Made FAST detector optional
|
||||
|
||||
This way it's possible to bundle Libmv sources subset
|
||||
to applications which doesn't need FAST detector.
|
||||
|
||||
Mainly this is done for Blender integration.
|
||||
|
||||
commit da4607f010bca0b3532cd4444afbb10bc774fc32
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Jan 28 18:32:39 2014 +0600
|
||||
|
||||
Implemented scoped_array and use it in detector
|
||||
|
||||
scoped_array is pretty much the same as scoped_ptr
|
||||
with the only difference that it'll free memory using
|
||||
delete[] operator.
|
||||
|
||||
It also gives some additional API functions to access
|
||||
array elements.
|
||||
|
||||
Currently it only used to manage images denoted as byte
|
||||
arrays in detector.
|
||||
|
||||
Reviewers: keir
|
||||
|
||||
Reviewed By: keir
|
||||
|
||||
Differential Revision: https://developer.blender.org/D266
|
||||
|
||||
commit cd7eb3eff2e69ce5e08570ead83ae6d35ee48857
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Jan 28 17:23:47 2014 +0600
|
||||
|
||||
Improvements to weighted tracks behavior
|
||||
|
||||
First thing changed by this commit is making it so
|
||||
Euclidean intersection takes track weight into account
|
||||
when solving minimization problem. This behaves the
|
||||
same exact way as it is for BA step.
|
||||
|
||||
Second thing is related on how average reprojection error
|
||||
is being calculated. It didn't take track weight into
|
||||
account which could confuse users. Now average reprojection
|
||||
error will give the same result as intersection/BA uses
|
||||
during minimization which gives much more predictable
|
||||
behavior.
|
||||
|
||||
Reviewers: keir
|
||||
|
||||
Reviewed By: keir
|
||||
|
||||
CC: sebastian_k
|
||||
|
||||
Differential Revision: https://developer.blender.org/D265
|
||||
|
||||
commit 6559b36dc14369175bfa0830323146acd3426483
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Jan 28 16:39:14 2014 +0600
|
||||
|
||||
Fixes for keyframe selection
|
||||
|
||||
Using tracks with constant zero weight used to crash
|
||||
keyframe selection since it was trying to use missing
|
||||
parameter blocks for Jacobian evaluation,
|
||||
|
||||
Also fixed possible issues with wrong camera block being
|
||||
marked as variable. This could technically happen when
|
||||
having zero weighted tracks. Made it so all camera blocks
|
||||
are marked as variable for now.
|
||||
|
||||
commit 557d531b061aa69d114e89cbb325c5175389afec
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Jan 28 16:10:33 2014 +0600
|
||||
|
||||
Style cleanup: wrong indentation of wrapped line
|
||||
|
||||
commit ca15262cf07a873268173965ee1fb84f9729b744
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Jan 28 15:21:36 2014 +0600
|
||||
|
||||
Rework detector API and implement Harris detector
|
||||
|
||||
Switch the detector API to a single function which accepts
|
||||
a float image and detector options. This makes usage of
|
||||
feature detection more unified across different algorithms.
|
||||
|
||||
Options structure is pretty much straightforward and contains
|
||||
detector to be used and all the detector-specific settings.
|
||||
|
||||
Also implemented Harris feature detection algorithm which
|
||||
is not as fast as FAST one but is expected to detect more
|
||||
robust feature points.
|
||||
|
||||
Reviewers: keir
|
||||
|
||||
Reviewed By: keir
|
||||
|
||||
Differential Revision: https://developer.blender.org/D258
|
||||
|
||||
commit 6458915f64fceba108c5279b7320ca8c76e8a742
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Fri Jan 24 19:14:18 2014 +0600
|
||||
|
||||
Add arcanist configuration file
|
||||
|
||||
commit 0a69fadadc5aacbd339f839ac5bd12c3571278b1
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Thu Jan 9 15:50:11 2014 +0600
|
||||
|
||||
Fix compilation error on NetBSD
|
||||
|
||||
- NetBSD doesn't provide sincos(3) in libm, so don't try to use it
|
||||
- Use posix_memalign on NetBSD
|
||||
|
||||
Original patch is by Jeorg Sonnenberger to Blender patch tracker, thanks!
|
||||
|
||||
commit b0df3e291e6c85f791658be04334efafc41989f5
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Thu Jan 2 15:12:18 2014 +0600
|
||||
|
||||
Fix build configuration warnings
|
||||
|
||||
Those warnings were mainly caused by installation
|
||||
configuration of Ceres. Made some tweaks to make
|
||||
CMake happy for now.
|
||||
|
||||
But for sure bigger cleanup here is needed.
|
||||
|
||||
commit b68de6acd20f3ffab92e0cd450198a700cd109ab
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Thu Jan 2 15:04:05 2014 +0600
|
||||
|
||||
Code and style cleanup
|
||||
|
||||
Mainly fixed some style warnings reported by cpplint.
|
||||
|
||||
Also changed how camera (un)distortion happens internally
|
||||
by replacing number of channels as a template argument
|
||||
with number as channels passing as function argument.
|
||||
Makes code easier to follow by eliminating loads checks
|
||||
how much channels are used and which argument to pass to
|
||||
the template.
|
||||
|
||||
commit b9e467e7c077b58199c4110f6967b7c18d1e7bf7
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Dec 31 20:34:39 2013 +0600
|
||||
|
||||
Update Ceres to the latest upstream
|
||||
|
||||
This brings up much easier termination type usage,
|
||||
which for us means we might use:
|
||||
|
||||
ceres::Summary::IsSolutionUsable()
|
||||
|
||||
instead of doing manual funky enum values check.
|
||||
|
||||
commit 3aeb2367e50b52ca2b9d59d4f0f0b4bbfd6a05e8
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Dec 31 20:43:24 2013 +0600
|
||||
|
||||
Update gtest to latest version 1.7.0
|
||||
|
||||
Also reshuffled CMakeLists in order to avoid
|
||||
conflicts happening between gflags bundled to
|
||||
Ceres and third_party.
|
||||
|
||||
commit 30aaa9cd0b4a4eb0948a17824e7e7622d8ebcb41
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Dec 31 20:10:06 2013 +0600
|
||||
|
||||
Changes for VC2013
|
||||
|
||||
Solves compilation error when using msvc2013
|
||||
|
||||
Original patch is by Alexandr Kuznetsov to blender.git
|
||||
|
||||
commit b204c0d25065a2b149de256929ff37d8f00f45bb
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Tue Dec 31 20:05:58 2013 +0600
|
||||
|
||||
Eagerly attempt to refine a track before doing a brute search
|
||||
|
||||
Before the refinement phase of tracking, a brute force SAD search
|
||||
is run across the search area. This works well but is slow;
|
||||
especially if the guess for the track's location is accurate.
|
||||
|
||||
This patch runs a refinement phase before running a brute force
|
||||
search, hoping that the guessed position (in x2, y2) is close to
|
||||
the best answer. If it is, then no brute search is done. If it is
|
||||
not, then a normal brute force search followed by refinement is
|
||||
done.
|
||||
|
||||
In some cases this may produce worse tracks than before; the
|
||||
regressions will need investigation. The predictive motion model
|
||||
(to be implemented) will reduce the probability of that happening.
|
||||
|
||||
commit 5361513f0328ff94b53125d29129561bb03132e8
|
||||
Author: Keir Mierle <mierle@gmail.com>
|
||||
Date: Tue Dec 31 20:04:46 2013 +0600
|
||||
|
||||
Fix bug where libmv tracking incorrectly succeeds on failure
|
||||
|
||||
Before this patch, if Ceres returned USER_SUCCESS indicating that
|
||||
Ceres was only changing the tracked quad slightly between
|
||||
iterations (indicating convergence), no final correlation check
|
||||
was done. This leads to incorrectly returning that the tracking
|
||||
was successful, when it actually failed.
|
||||
|
||||
commit ba9e63eed09e33a48bbcb081058f45ac16f8738e
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Dec 31 20:00:46 2013 +0600
|
||||
|
||||
Implementation of weighted tracks
|
||||
|
||||
Added a weight field to Track structure which means
|
||||
how much affect this track will have on the final
|
||||
reconstruction.
|
||||
|
||||
Currently it affects on BA step only which in most
|
||||
cases will work just fine. However, it worth looking
|
||||
into weight support for intersection/resection.
|
||||
|
||||
commit 4600df8b685ca8c4daa22d6c3b0125fd42c3bc67
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Dec 31 19:30:14 2013 +0600
|
||||
|
||||
Code cleanup: move function prototype to header file
|
||||
|
||||
commit 0ce5b6efde774b3f042acf9e42c95674548f1c01
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Dec 31 19:26:48 2013 +0600
|
||||
|
||||
Get rid of Allow Fallback option for euclidean resection
|
||||
|
||||
It was rather confusing from the user usage point of view
|
||||
and didn't get so much improvement after new bundle adjuster
|
||||
was added.
|
||||
|
||||
In the future we might want to switch resection to PPnP algorithm,
|
||||
which could also might be a nice alternative to fallback option.
|
||||
|
||||
commit 5d063426f4809000c27f38ed798e4224bbd09a6d
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Dec 31 19:24:05 2013 +0600
|
||||
|
||||
Use explicit declaration of int types sign
|
||||
|
||||
Mainly needs to make blender happy with this custom
|
||||
header which used to run into conflict with other int
|
||||
types headers.
|
||||
|
||||
Wouldn't harm being more explicit here anyway.
|
||||
|
||||
commit c5be59dee94f94de369006c544080282cfb245cc
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Tue Dec 31 14:50:00 2013 +0600
|
||||
|
||||
Implement refinement of estimated homography/fundamental matrices
|
||||
|
||||
It was only possible to perform algebraic estimation, which didn't
|
||||
give so much accurate results.
|
||||
|
||||
Implemented a way to perform algebraic estimation followed with
|
||||
refinement step using Ceres minimizer.
|
||||
|
||||
The code was actually mostly already there since keyframe selection
|
||||
patch. Made such estimation a generic function in multiview/ and
|
||||
hanged API for estimation in order to pass all additional options via
|
||||
an options structure (the same way as it's done fr Ceres).
|
||||
|
||||
Most of the options are straight-forward to understand,but some
|
||||
deserves more description here:
|
||||
|
||||
* expected_average_symmetric_distance is used as an early output check
|
||||
and as soon as average symmetric error goes below this threshold
|
||||
refining finishes.
|
||||
|
||||
This distance is measured in the same units as input points are.
|
||||
|
||||
It is arguable whether we need callback for this or not, but seems
|
||||
Ceres doesn't have some kind of absolute threshold for function value
|
||||
and function_tolerance behaves different from logic behind expected
|
||||
symmetric error.
|
||||
|
||||
* There' an option to normalize correspondences before estimating the
|
||||
homography in order to increase estimation stability. See
|
||||
|
||||
R. Hartley and A. Zisserman. Multiple View Geometry in Computer
|
||||
Vision. Cambridge University Press, second edition, 2003.
|
||||
|
||||
https://www.cs.ubc.ca/grads/resources/thesis/May09/Dubrofsky_Elan.pdf
|
||||
|
||||
commit 1cdad972c4a9005e78891524cbd6d65600ca7e99
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed Sep 25 16:12:29 2013 +0600
|
||||
|
||||
Code cleanup: Minor function capitalization fix
|
||||
|
||||
Original patch by Joseph Mansfield to the Blender repository.
|
||||
|
||||
commit 434316d084e8a41fd452f03610d7244d664948dc
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed Sep 25 16:07:43 2013 +0600
|
||||
|
||||
Code cleanup: spelling correction
|
||||
|
||||
Original patch by Joseph Mansfield to the Blender repository.
|
||||
|
||||
commit 5cfe8465ac70407c0959c53bcd5206657a1322a2
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed Sep 25 16:02:48 2013 +0600
|
||||
|
||||
Fix for uninitialized covariance matrix
|
||||
|
||||
Lead to unpredictable tracking termination criteria.
|
||||
|
||||
commit fd86b77d413489649a989f075b061714ed9a72fc
|
||||
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
||||
Date: Wed Sep 25 16:01:19 2013 +0600
|
||||
|
||||
Add Procrustes PNP ("PPnP") resection algorithm to libmv
|
||||
|
||||
This adds a new Euclidean resection method, used to create the
|
||||
initial reconstruction in the motion tracker, to libmv. The method
|
||||
is based on the Procrustes PNP algorithm (aka "PPnP"). Currently
|
||||
the algorithm is not connected with the motion tracker, but it
|
||||
will be eventually since it supports initialization.
|
||||
|
||||
Having an initial guess when doing resection is important for
|
||||
ambiguous cases where potentially the user could offer extra
|
||||
guidance to the solver, in the form of "this point is in front of
|
||||
that point".
|
||||
|
||||
Original patch by Keir Mierle made to Blender repository.
|
||||
|
23
extern/libmv/SConscript
vendored
23
extern/libmv/SConscript
vendored
@@ -6,7 +6,6 @@
|
||||
|
||||
import sys
|
||||
import os
|
||||
from FindSharedPtr import FindSharedPtr
|
||||
|
||||
Import('env')
|
||||
|
||||
@@ -24,11 +23,12 @@ if env['WITH_BF_LIBMV']:
|
||||
defs.append('CERES_TR1_SHARED_PTR')
|
||||
|
||||
defs.append('GOOGLE_GLOG_DLL_DECL=')
|
||||
defs.append('WITH_LIBMV')
|
||||
defs.append('WITH_LIBMV_GUARDED_ALLOC')
|
||||
defs.append('LIBMV_NO_FAST_DETECTOR')
|
||||
|
||||
src = env.Glob('*.cc')
|
||||
src = env.Glob('intern/*.cc')
|
||||
src.remove('intern' + os.sep + 'stub.cc')
|
||||
src += env.Glob('libmv/autotrack/*.cc')
|
||||
src += env.Glob('libmv/base/*.cc')
|
||||
src += env.Glob('libmv/image/*.cc')
|
||||
src += env.Glob('libmv/multiview/*.cc')
|
||||
@@ -46,17 +46,24 @@ if env['WITH_BF_LIBMV']:
|
||||
if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
|
||||
incs += ' ./third_party/msinttypes'
|
||||
|
||||
src += ['./third_party/glog/src/logging.cc', './third_party/glog/src/raw_logging.cc', './third_party/glog/src/utilities.cc', './third_party/glog/src/vlog_is_on.cc']
|
||||
src += ['./third_party/glog/src/windows/port.cc']
|
||||
else:
|
||||
src += env.Glob("third_party/glog/src/*.cc")
|
||||
incs += ' ./third_party/glog/src'
|
||||
else:
|
||||
src = env.Glob("libmv-capi_stub.cc")
|
||||
src = env.Glob("intern/stub.cc")
|
||||
|
||||
src = [src for src in src if src.find('_test.cc') == -1]
|
||||
|
||||
env.BlenderLib ( libname = 'extern_libmv', sources=src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137] )
|
||||
env.BlenderLib(libname = 'extern_libmv', sources=src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137])
|
||||
|
||||
if env['WITH_BF_LIBMV'] or (env['WITH_BF_CYCLES'] and env['WITH_BF_CYCLES_LOGGING']):
|
||||
glog_src = []
|
||||
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'):
|
||||
glog_src += ['./third_party/glog/src/logging.cc', './third_party/glog/src/raw_logging.cc', './third_party/glog/src/utilities.cc', './third_party/glog/src/vlog_is_on.cc']
|
||||
glog_src += ['./third_party/glog/src/windows/port.cc']
|
||||
else:
|
||||
glog_src += env.Glob("third_party/glog/src/*.cc")
|
||||
|
||||
env.BlenderLib(libname = 'extern_glog', sources=glog_src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137])
|
||||
|
||||
if env['WITH_BF_LIBMV']:
|
||||
SConscript(['third_party/SConscript'])
|
||||
|
59
extern/libmv/bundle.sh
vendored
59
extern/libmv/bundle.sh
vendored
@@ -7,7 +7,7 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BRANCH="devel"
|
||||
BRANCH="master"
|
||||
|
||||
repo="git://git.blender.org/libmv.git"
|
||||
tmp=`mktemp -d`
|
||||
@@ -128,12 +128,10 @@ set(INC_SYS
|
||||
|
||||
set(SRC
|
||||
libmv-capi.h
|
||||
libmv-capi_intern.h
|
||||
)
|
||||
|
||||
if(WITH_LIBMV)
|
||||
add_definitions(
|
||||
-DWITH_LIBMV
|
||||
-DWITH_LIBMV_GUARDED_ALLOC
|
||||
-DGOOGLE_GLOG_DLL_DECL=
|
||||
-DLIBMV_NO_FAST_DETECTOR=
|
||||
@@ -159,18 +157,38 @@ if(WITH_LIBMV)
|
||||
../../intern/guardedalloc
|
||||
)
|
||||
|
||||
set(INC_SYS
|
||||
list(APPEND INC_SYS
|
||||
../Eigen3
|
||||
\${PNG_INCLUDE_DIR}
|
||||
\${PNG_INCLUDE_DIRS}
|
||||
\${ZLIB_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
list(APPEND SRC
|
||||
libmv-capi.cc
|
||||
libmv-util.cc
|
||||
intern/autotrack.cc
|
||||
intern/camera_intrinsics.cc
|
||||
intern/detector.cc
|
||||
intern/frame_accessor.cc
|
||||
intern/homography.cc
|
||||
intern/image.cc
|
||||
intern/logging.cc
|
||||
intern/reconstruction.cc
|
||||
intern/track_region.cc
|
||||
intern/tracks.cc
|
||||
intern/tracksN.cc
|
||||
${sources}
|
||||
${third_sources}
|
||||
libmv-util.h
|
||||
|
||||
intern/autotrack.h
|
||||
intern/camera_intrinsics.h
|
||||
intern/detector.h
|
||||
intern/frame_accessor.h
|
||||
intern/homography.h
|
||||
intern/image.h
|
||||
intern/logging.h
|
||||
intern/reconstruction.h
|
||||
intern/track_region.h
|
||||
intern/tracks.h
|
||||
intern/tracksN.h
|
||||
${headers}
|
||||
|
||||
${third_headers}
|
||||
@@ -195,7 +213,7 @@ ${tests}
|
||||
endif()
|
||||
else()
|
||||
list(APPEND SRC
|
||||
libmv-capi_stub.cc
|
||||
intern/stub.cc
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -206,7 +224,7 @@ if(WITH_LIBMV)
|
||||
endif()
|
||||
|
||||
# make GLog a separate target, so it can be used for gtest as well.
|
||||
if(WITH_LIBMV OR WITH_GTESTS)
|
||||
if(WITH_LIBMV OR WITH_GTESTS OR WITH_CYCLES_LOGGING)
|
||||
# We compile GLog together with GFlag so we don't worry about
|
||||
# adding extra lib to linker.
|
||||
set(GLOG_SRC
|
||||
@@ -287,11 +305,11 @@ if env['WITH_BF_LIBMV']:
|
||||
defs.append('CERES_TR1_SHARED_PTR')
|
||||
|
||||
defs.append('GOOGLE_GLOG_DLL_DECL=')
|
||||
defs.append('WITH_LIBMV')
|
||||
defs.append('WITH_LIBMV_GUARDED_ALLOC')
|
||||
defs.append('LIBMV_NO_FAST_DETECTOR')
|
||||
|
||||
src = env.Glob('*.cc')
|
||||
src = env.Glob('intern/*.cc')
|
||||
src.remove('intern' + os.sep + 'stub.cc')
|
||||
$src
|
||||
|
||||
incs += ' ../Eigen3 third_party/gflags third_party/glog/src third_party/ceres/include third_party/ceres/config ../../intern/guardedalloc'
|
||||
@@ -303,17 +321,24 @@ $src
|
||||
if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
|
||||
incs += ' ./third_party/msinttypes'
|
||||
${win_src}
|
||||
src += ['./third_party/glog/src/logging.cc', './third_party/glog/src/raw_logging.cc', './third_party/glog/src/utilities.cc', './third_party/glog/src/vlog_is_on.cc']
|
||||
src += ['./third_party/glog/src/windows/port.cc']
|
||||
else:
|
||||
src += env.Glob("third_party/glog/src/*.cc")
|
||||
incs += ' ./third_party/glog/src'
|
||||
else:
|
||||
src = env.Glob("libmv-capi_stub.cc")
|
||||
src = env.Glob("intern/stub.cc")
|
||||
|
||||
src = [src for src in src if src.find('_test.cc') == -1]
|
||||
|
||||
env.BlenderLib ( libname = 'extern_libmv', sources=src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137] )
|
||||
env.BlenderLib(libname = 'extern_libmv', sources=src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137])
|
||||
|
||||
if env['WITH_BF_LIBMV'] or (env['WITH_BF_CYCLES'] and env['WITH_BF_CYCLES_LOGGING']):
|
||||
glog_src = []
|
||||
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'):
|
||||
glog_src += ['./third_party/glog/src/logging.cc', './third_party/glog/src/raw_logging.cc', './third_party/glog/src/utilities.cc', './third_party/glog/src/vlog_is_on.cc']
|
||||
glog_src += ['./third_party/glog/src/windows/port.cc']
|
||||
else:
|
||||
glog_src += env.Glob("third_party/glog/src/*.cc")
|
||||
|
||||
env.BlenderLib(libname = 'extern_glog', sources=glog_src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137])
|
||||
|
||||
if env['WITH_BF_LIBMV']:
|
||||
SConscript(['third_party/SConscript'])
|
||||
|
16
extern/libmv/files.txt
vendored
16
extern/libmv/files.txt
vendored
@@ -1,3 +1,18 @@
|
||||
libmv/autotrack/autotrack.cc
|
||||
libmv/autotrack/autotrack.h
|
||||
libmv/autotrack/callbacks.h
|
||||
libmv/autotrack/frame_accessor.h
|
||||
libmv/autotrack/marker.h
|
||||
libmv/autotrack/model.h
|
||||
libmv/autotrack/predict_tracks.cc
|
||||
libmv/autotrack/predict_tracks.h
|
||||
libmv/autotrack/predict_tracks_test.cc
|
||||
libmv/autotrack/quad.h
|
||||
libmv/autotrack/reconstruction.h
|
||||
libmv/autotrack/region.h
|
||||
libmv/autotrack/tracks.cc
|
||||
libmv/autotrack/tracks.h
|
||||
libmv/autotrack/tracks_test.cc
|
||||
libmv/base/aligned_malloc.cc
|
||||
libmv/base/aligned_malloc.h
|
||||
libmv/base/id_generator.h
|
||||
@@ -104,6 +119,7 @@ libmv/tracking/brute_region_tracker.h
|
||||
libmv/tracking/brute_region_tracker_test.cc
|
||||
libmv/tracking/hybrid_region_tracker.cc
|
||||
libmv/tracking/hybrid_region_tracker.h
|
||||
libmv/tracking/kalman_filter.h
|
||||
libmv/tracking/klt_region_tracker.cc
|
||||
libmv/tracking/klt_region_tracker.h
|
||||
libmv/tracking/klt_region_tracker_test.cc
|
||||
|
99
extern/libmv/intern/autotrack.cc
vendored
Normal file
99
extern/libmv/intern/autotrack.cc
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2014 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/autotrack.h"
|
||||
#include "intern/tracksN.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/autotrack/autotrack.h"
|
||||
|
||||
using mv::AutoTrack;
|
||||
using mv::FrameAccessor;
|
||||
using mv::Marker;
|
||||
using libmv::TrackRegionOptions;
|
||||
using libmv::TrackRegionResult;
|
||||
|
||||
libmv_AutoTrack* libmv_autoTrackNew(libmv_FrameAccessor *frame_accessor) {
|
||||
return (libmv_AutoTrack*) LIBMV_OBJECT_NEW(AutoTrack,
|
||||
(FrameAccessor*) frame_accessor);
|
||||
}
|
||||
|
||||
void libmv_autoTrackDestroy(libmv_AutoTrack* libmv_autotrack) {
|
||||
LIBMV_OBJECT_DELETE(libmv_autotrack, AutoTrack);
|
||||
}
|
||||
|
||||
void libmv_autoTrackSetOptions(libmv_AutoTrack* libmv_autotrack,
|
||||
const libmv_AutoTrackOptions* options) {
|
||||
AutoTrack *autotrack = ((AutoTrack*) libmv_autotrack);
|
||||
libmv_configureTrackRegionOptions(options->track_region,
|
||||
&autotrack->options.track_region);
|
||||
|
||||
autotrack->options.search_region.min(0) = options->search_region.min[0];
|
||||
autotrack->options.search_region.min(1) = options->search_region.min[1];
|
||||
autotrack->options.search_region.max(0) = options->search_region.max[0];
|
||||
autotrack->options.search_region.max(1) = options->search_region.max[1];
|
||||
}
|
||||
|
||||
int libmv_autoTrackMarker(libmv_AutoTrack* libmv_autotrack,
|
||||
const libmv_TrackRegionOptions* libmv_options,
|
||||
libmv_Marker *libmv_tracked_marker,
|
||||
libmv_TrackRegionResult* libmv_result) {
|
||||
|
||||
Marker tracked_marker;
|
||||
TrackRegionOptions options;
|
||||
TrackRegionResult result;
|
||||
libmv_apiMarkerToMarker(*libmv_tracked_marker, &tracked_marker);
|
||||
libmv_configureTrackRegionOptions(*libmv_options,
|
||||
&options);
|
||||
(((AutoTrack*) libmv_autotrack)->TrackMarker(&tracked_marker,
|
||||
&result,
|
||||
&options));
|
||||
libmv_markerToApiMarker(tracked_marker, libmv_tracked_marker);
|
||||
libmv_regionTrackergetResult(result, libmv_result);
|
||||
return result.is_usable();
|
||||
}
|
||||
|
||||
void libmv_autoTrackAddMarker(libmv_AutoTrack* libmv_autotrack,
|
||||
const libmv_Marker* libmv_marker) {
|
||||
Marker marker;
|
||||
libmv_apiMarkerToMarker(*libmv_marker, &marker);
|
||||
((AutoTrack*) libmv_autotrack)->AddMarker(marker);
|
||||
}
|
||||
|
||||
int libmv_autoTrackGetMarker(libmv_AutoTrack* libmv_autotrack,
|
||||
int clip,
|
||||
int frame,
|
||||
int track,
|
||||
libmv_Marker *libmv_marker) {
|
||||
Marker marker;
|
||||
int ok = ((AutoTrack*) libmv_autotrack)->GetMarker(clip,
|
||||
frame,
|
||||
track,
|
||||
&marker);
|
||||
if (ok) {
|
||||
libmv_markerToApiMarker(marker, libmv_marker);
|
||||
}
|
||||
return ok;
|
||||
}
|
71
extern/libmv/intern/autotrack.h
vendored
Normal file
71
extern/libmv/intern/autotrack.h
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2014 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_AUTOTRACK_H_
|
||||
#define LIBMV_C_API_AUTOTRACK_H_
|
||||
|
||||
#include "intern/frame_accessor.h"
|
||||
#include "intern/tracksN.h"
|
||||
#include "intern/track_region.h"
|
||||
#include "intern/region.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct libmv_AutoTrack libmv_AutoTrack;
|
||||
|
||||
typedef struct libmv_AutoTrackOptions {
|
||||
libmv_TrackRegionOptions track_region;
|
||||
libmv_Region search_region;
|
||||
} libmv_AutoTrackOptions;
|
||||
|
||||
libmv_AutoTrack* libmv_autoTrackNew(libmv_FrameAccessor *frame_accessor);
|
||||
|
||||
void libmv_autoTrackDestroy(libmv_AutoTrack* libmv_autotrack);
|
||||
|
||||
void libmv_autoTrackSetOptions(libmv_AutoTrack* libmv_autotrack,
|
||||
const libmv_AutoTrackOptions* options);
|
||||
|
||||
int libmv_autoTrackMarker(libmv_AutoTrack* libmv_autotrack,
|
||||
const libmv_TrackRegionOptions* libmv_options,
|
||||
libmv_Marker *libmv_tracker_marker,
|
||||
libmv_TrackRegionResult* libmv_result);
|
||||
|
||||
void libmv_autoTrackAddMarker(libmv_AutoTrack* libmv_autotrack,
|
||||
const libmv_Marker* libmv_marker);
|
||||
|
||||
int libmv_autoTrackGetMarker(libmv_AutoTrack* libmv_autotrack,
|
||||
int clip,
|
||||
int frame,
|
||||
int track,
|
||||
libmv_Marker *libmv_marker);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_TRACKS_H_
|
355
extern/libmv/intern/camera_intrinsics.cc
vendored
Normal file
355
extern/libmv/intern/camera_intrinsics.cc
vendored
Normal file
@@ -0,0 +1,355 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/camera_intrinsics.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/simple_pipeline/camera_intrinsics.h"
|
||||
|
||||
using libmv::CameraIntrinsics;
|
||||
using libmv::DivisionCameraIntrinsics;
|
||||
using libmv::PolynomialCameraIntrinsics;
|
||||
|
||||
libmv_CameraIntrinsics *libmv_cameraIntrinsicsNew(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options) {
|
||||
CameraIntrinsics *camera_intrinsics =
|
||||
libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
|
||||
return (libmv_CameraIntrinsics *) camera_intrinsics;
|
||||
}
|
||||
|
||||
libmv_CameraIntrinsics *libmv_cameraIntrinsicsCopy(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics) {
|
||||
const CameraIntrinsics *orig_intrinsics =
|
||||
(const CameraIntrinsics *) libmv_intrinsics;
|
||||
|
||||
CameraIntrinsics *new_intrinsics = NULL;
|
||||
switch (orig_intrinsics->GetDistortionModelType()) {
|
||||
case libmv::DISTORTION_MODEL_POLYNOMIAL:
|
||||
{
|
||||
const PolynomialCameraIntrinsics *polynomial_intrinsics =
|
||||
static_cast<const PolynomialCameraIntrinsics*>(orig_intrinsics);
|
||||
new_intrinsics = LIBMV_OBJECT_NEW(PolynomialCameraIntrinsics,
|
||||
*polynomial_intrinsics);
|
||||
break;
|
||||
}
|
||||
case libmv::DISTORTION_MODEL_DIVISION:
|
||||
{
|
||||
const DivisionCameraIntrinsics *division_intrinsics =
|
||||
static_cast<const DivisionCameraIntrinsics*>(orig_intrinsics);
|
||||
new_intrinsics = LIBMV_OBJECT_NEW(DivisionCameraIntrinsics,
|
||||
*division_intrinsics);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
assert(!"Unknown distortion model");
|
||||
}
|
||||
return (libmv_CameraIntrinsics *) new_intrinsics;
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDestroy(libmv_CameraIntrinsics* libmv_intrinsics) {
|
||||
LIBMV_OBJECT_DELETE(libmv_intrinsics, CameraIntrinsics);
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUpdate(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
libmv_CameraIntrinsics* libmv_intrinsics) {
|
||||
CameraIntrinsics *camera_intrinsics = (CameraIntrinsics *) libmv_intrinsics;
|
||||
|
||||
double focal_length = libmv_camera_intrinsics_options->focal_length;
|
||||
double principal_x = libmv_camera_intrinsics_options->principal_point_x;
|
||||
double principal_y = libmv_camera_intrinsics_options->principal_point_y;
|
||||
int image_width = libmv_camera_intrinsics_options->image_width;
|
||||
int image_height = libmv_camera_intrinsics_options->image_height;
|
||||
|
||||
/* Try avoid unnecessary updates, so pre-computed distortion grids
|
||||
* are not freed.
|
||||
*/
|
||||
|
||||
if (camera_intrinsics->focal_length() != focal_length) {
|
||||
camera_intrinsics->SetFocalLength(focal_length, focal_length);
|
||||
}
|
||||
|
||||
if (camera_intrinsics->principal_point_x() != principal_x ||
|
||||
camera_intrinsics->principal_point_y() != principal_y) {
|
||||
camera_intrinsics->SetPrincipalPoint(principal_x, principal_y);
|
||||
}
|
||||
|
||||
if (camera_intrinsics->image_width() != image_width ||
|
||||
camera_intrinsics->image_height() != image_height) {
|
||||
camera_intrinsics->SetImageSize(image_width, image_height);
|
||||
}
|
||||
|
||||
switch (libmv_camera_intrinsics_options->distortion_model) {
|
||||
case LIBMV_DISTORTION_MODEL_POLYNOMIAL:
|
||||
{
|
||||
assert(camera_intrinsics->GetDistortionModelType() ==
|
||||
libmv::DISTORTION_MODEL_POLYNOMIAL);
|
||||
|
||||
PolynomialCameraIntrinsics *polynomial_intrinsics =
|
||||
(PolynomialCameraIntrinsics *) camera_intrinsics;
|
||||
|
||||
double k1 = libmv_camera_intrinsics_options->polynomial_k1;
|
||||
double k2 = libmv_camera_intrinsics_options->polynomial_k2;
|
||||
double k3 = libmv_camera_intrinsics_options->polynomial_k3;
|
||||
|
||||
if (polynomial_intrinsics->k1() != k1 ||
|
||||
polynomial_intrinsics->k2() != k2 ||
|
||||
polynomial_intrinsics->k3() != k3) {
|
||||
polynomial_intrinsics->SetRadialDistortion(k1, k2, k3);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case LIBMV_DISTORTION_MODEL_DIVISION:
|
||||
{
|
||||
assert(camera_intrinsics->GetDistortionModelType() ==
|
||||
libmv::DISTORTION_MODEL_DIVISION);
|
||||
|
||||
DivisionCameraIntrinsics *division_intrinsics =
|
||||
(DivisionCameraIntrinsics *) camera_intrinsics;
|
||||
|
||||
double k1 = libmv_camera_intrinsics_options->division_k1;
|
||||
double k2 = libmv_camera_intrinsics_options->division_k2;
|
||||
|
||||
if (division_intrinsics->k1() != k1 ||
|
||||
division_intrinsics->k2() != k2) {
|
||||
division_intrinsics->SetDistortion(k1, k2);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(!"Unknown distortion model");
|
||||
}
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsSetThreads(libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
int threads) {
|
||||
CameraIntrinsics *camera_intrinsics = (CameraIntrinsics *) libmv_intrinsics;
|
||||
camera_intrinsics->SetThreads(threads);
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsExtractOptions(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
libmv_CameraIntrinsicsOptions* camera_intrinsics_options) {
|
||||
const CameraIntrinsics *camera_intrinsics =
|
||||
(const CameraIntrinsics *) libmv_intrinsics;
|
||||
|
||||
// Fill in options which are common for all distortion models.
|
||||
camera_intrinsics_options->focal_length = camera_intrinsics->focal_length();
|
||||
camera_intrinsics_options->principal_point_x =
|
||||
camera_intrinsics->principal_point_x();
|
||||
camera_intrinsics_options->principal_point_y =
|
||||
camera_intrinsics->principal_point_y();
|
||||
|
||||
camera_intrinsics_options->image_width = camera_intrinsics->image_width();
|
||||
camera_intrinsics_options->image_height = camera_intrinsics->image_height();
|
||||
|
||||
switch (camera_intrinsics->GetDistortionModelType()) {
|
||||
case libmv::DISTORTION_MODEL_POLYNOMIAL:
|
||||
{
|
||||
const PolynomialCameraIntrinsics *polynomial_intrinsics =
|
||||
static_cast<const PolynomialCameraIntrinsics *>(camera_intrinsics);
|
||||
camera_intrinsics_options->distortion_model =
|
||||
LIBMV_DISTORTION_MODEL_POLYNOMIAL;
|
||||
camera_intrinsics_options->polynomial_k1 = polynomial_intrinsics->k1();
|
||||
camera_intrinsics_options->polynomial_k2 = polynomial_intrinsics->k2();
|
||||
camera_intrinsics_options->polynomial_k3 = polynomial_intrinsics->k3();
|
||||
camera_intrinsics_options->polynomial_p1 = polynomial_intrinsics->p1();
|
||||
camera_intrinsics_options->polynomial_p1 = polynomial_intrinsics->p2();
|
||||
break;
|
||||
}
|
||||
|
||||
case libmv::DISTORTION_MODEL_DIVISION:
|
||||
{
|
||||
const DivisionCameraIntrinsics *division_intrinsics =
|
||||
static_cast<const DivisionCameraIntrinsics *>(camera_intrinsics);
|
||||
camera_intrinsics_options->distortion_model =
|
||||
LIBMV_DISTORTION_MODEL_DIVISION;
|
||||
camera_intrinsics_options->division_k1 = division_intrinsics->k1();
|
||||
camera_intrinsics_options->division_k2 = division_intrinsics->k2();
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(!"Uknown distortion model");
|
||||
}
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUndistortByte(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
const unsigned char *source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
unsigned char* destination_image) {
|
||||
CameraIntrinsics *camera_intrinsics = (CameraIntrinsics *) libmv_intrinsics;
|
||||
camera_intrinsics->UndistortBuffer(source_image,
|
||||
width, height,
|
||||
overscan,
|
||||
channels,
|
||||
destination_image);
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUndistortFloat(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
const float* source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
float* destination_image) {
|
||||
CameraIntrinsics *intrinsics = (CameraIntrinsics *) libmv_intrinsics;
|
||||
intrinsics->UndistortBuffer(source_image,
|
||||
width, height,
|
||||
overscan,
|
||||
channels,
|
||||
destination_image);
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDistortByte(
|
||||
const struct libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
const unsigned char *source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
unsigned char *destination_image) {
|
||||
CameraIntrinsics *intrinsics = (CameraIntrinsics *) libmv_intrinsics;
|
||||
intrinsics->DistortBuffer(source_image,
|
||||
width, height,
|
||||
overscan,
|
||||
channels,
|
||||
destination_image);
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDistortFloat(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
float* source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
float* destination_image) {
|
||||
CameraIntrinsics *intrinsics = (CameraIntrinsics *) libmv_intrinsics;
|
||||
intrinsics->DistortBuffer(source_image,
|
||||
width, height,
|
||||
overscan,
|
||||
channels,
|
||||
destination_image);
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsApply(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
double x,
|
||||
double y,
|
||||
double* x1,
|
||||
double* y1) {
|
||||
/* Do a lens distortion if focal length is non-zero only. */
|
||||
if (libmv_camera_intrinsics_options->focal_length) {
|
||||
CameraIntrinsics* camera_intrinsics =
|
||||
libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
|
||||
camera_intrinsics->ApplyIntrinsics(x, y, x1, y1);
|
||||
LIBMV_OBJECT_DELETE(camera_intrinsics, CameraIntrinsics);
|
||||
}
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsInvert(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
double x,
|
||||
double y,
|
||||
double* x1,
|
||||
double* y1) {
|
||||
/* Do a lens un-distortion if focal length is non-zero only/ */
|
||||
if (libmv_camera_intrinsics_options->focal_length) {
|
||||
CameraIntrinsics *camera_intrinsics =
|
||||
libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
|
||||
camera_intrinsics->InvertIntrinsics(x, y, x1, y1);
|
||||
LIBMV_OBJECT_DELETE(camera_intrinsics, CameraIntrinsics);
|
||||
}
|
||||
}
|
||||
|
||||
static void libmv_cameraIntrinsicsFillFromOptions(
|
||||
const libmv_CameraIntrinsicsOptions* camera_intrinsics_options,
|
||||
CameraIntrinsics* camera_intrinsics) {
|
||||
camera_intrinsics->SetFocalLength(camera_intrinsics_options->focal_length,
|
||||
camera_intrinsics_options->focal_length);
|
||||
|
||||
camera_intrinsics->SetPrincipalPoint(
|
||||
camera_intrinsics_options->principal_point_x,
|
||||
camera_intrinsics_options->principal_point_y);
|
||||
|
||||
camera_intrinsics->SetImageSize(camera_intrinsics_options->image_width,
|
||||
camera_intrinsics_options->image_height);
|
||||
|
||||
switch (camera_intrinsics_options->distortion_model) {
|
||||
case LIBMV_DISTORTION_MODEL_POLYNOMIAL:
|
||||
{
|
||||
PolynomialCameraIntrinsics *polynomial_intrinsics =
|
||||
static_cast<PolynomialCameraIntrinsics*>(camera_intrinsics);
|
||||
|
||||
polynomial_intrinsics->SetRadialDistortion(
|
||||
camera_intrinsics_options->polynomial_k1,
|
||||
camera_intrinsics_options->polynomial_k2,
|
||||
camera_intrinsics_options->polynomial_k3);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case LIBMV_DISTORTION_MODEL_DIVISION:
|
||||
{
|
||||
DivisionCameraIntrinsics *division_intrinsics =
|
||||
static_cast<DivisionCameraIntrinsics*>(camera_intrinsics);
|
||||
|
||||
division_intrinsics->SetDistortion(
|
||||
camera_intrinsics_options->division_k1,
|
||||
camera_intrinsics_options->division_k2);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(!"Unknown distortion model");
|
||||
}
|
||||
}
|
||||
|
||||
CameraIntrinsics* libmv_cameraIntrinsicsCreateFromOptions(
|
||||
const libmv_CameraIntrinsicsOptions* camera_intrinsics_options) {
|
||||
CameraIntrinsics *camera_intrinsics = NULL;
|
||||
switch (camera_intrinsics_options->distortion_model) {
|
||||
case LIBMV_DISTORTION_MODEL_POLYNOMIAL:
|
||||
camera_intrinsics = LIBMV_OBJECT_NEW(PolynomialCameraIntrinsics);
|
||||
break;
|
||||
case LIBMV_DISTORTION_MODEL_DIVISION:
|
||||
camera_intrinsics = LIBMV_OBJECT_NEW(DivisionCameraIntrinsics);
|
||||
break;
|
||||
default:
|
||||
assert(!"Unknown distortion model");
|
||||
}
|
||||
libmv_cameraIntrinsicsFillFromOptions(camera_intrinsics_options,
|
||||
camera_intrinsics);
|
||||
return camera_intrinsics;
|
||||
}
|
138
extern/libmv/intern/camera_intrinsics.h
vendored
Normal file
138
extern/libmv/intern/camera_intrinsics.h
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_CAMERA_INTRINSICS_H_
|
||||
#define LIBMV_C_API_CAMERA_INTRINSICS_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct libmv_CameraIntrinsics libmv_CameraIntrinsics;
|
||||
|
||||
enum {
|
||||
LIBMV_DISTORTION_MODEL_POLYNOMIAL = 0,
|
||||
LIBMV_DISTORTION_MODEL_DIVISION = 1,
|
||||
};
|
||||
|
||||
typedef struct libmv_CameraIntrinsicsOptions {
|
||||
// Common settings of all distortion models.
|
||||
int distortion_model;
|
||||
int image_width, image_height;
|
||||
double focal_length;
|
||||
double principal_point_x, principal_point_y;
|
||||
|
||||
// Radial distortion model.
|
||||
double polynomial_k1, polynomial_k2, polynomial_k3;
|
||||
double polynomial_p1, polynomial_p2;
|
||||
|
||||
// Division distortion model.
|
||||
double division_k1, division_k2;
|
||||
} libmv_CameraIntrinsicsOptions;
|
||||
|
||||
libmv_CameraIntrinsics *libmv_cameraIntrinsicsNew(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options);
|
||||
|
||||
libmv_CameraIntrinsics *libmv_cameraIntrinsicsCopy(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics);
|
||||
|
||||
void libmv_cameraIntrinsicsDestroy(libmv_CameraIntrinsics* libmv_intrinsics);
|
||||
void libmv_cameraIntrinsicsUpdate(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
libmv_CameraIntrinsics* libmv_intrinsics);
|
||||
|
||||
void libmv_cameraIntrinsicsSetThreads(libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
int threads);
|
||||
|
||||
void libmv_cameraIntrinsicsExtractOptions(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
libmv_CameraIntrinsicsOptions* camera_intrinsics_options);
|
||||
|
||||
void libmv_cameraIntrinsicsUndistortByte(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
const unsigned char *source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
unsigned char* destination_image);
|
||||
|
||||
void libmv_cameraIntrinsicsUndistortFloat(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
const float* source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
float* destination_image);
|
||||
|
||||
void libmv_cameraIntrinsicsDistortByte(
|
||||
const struct libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
const unsigned char *source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
unsigned char *destination_image);
|
||||
|
||||
void libmv_cameraIntrinsicsDistortFloat(
|
||||
const libmv_CameraIntrinsics* libmv_intrinsics,
|
||||
float* source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
float* destination_image);
|
||||
|
||||
void libmv_cameraIntrinsicsApply(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
double x,
|
||||
double y,
|
||||
double* x1,
|
||||
double* y1);
|
||||
|
||||
void libmv_cameraIntrinsicsInvert(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
double x,
|
||||
double y,
|
||||
double* x1,
|
||||
double* y1);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
namespace libmv {
|
||||
class CameraIntrinsics;
|
||||
}
|
||||
|
||||
libmv::CameraIntrinsics* libmv_cameraIntrinsicsCreateFromOptions(
|
||||
const libmv_CameraIntrinsicsOptions* camera_intrinsics_options);
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_CAMERA_INTRINSICS_H_
|
148
extern/libmv/intern/detector.cc
vendored
Normal file
148
extern/libmv/intern/detector.cc
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/detector.h"
|
||||
#include "intern/image.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/simple_pipeline/detect.h"
|
||||
|
||||
using libmv::Detect;
|
||||
using libmv::DetectOptions;
|
||||
using libmv::Feature;
|
||||
using libmv::FloatImage;
|
||||
|
||||
struct libmv_Features {
|
||||
int count;
|
||||
Feature* features;
|
||||
};
|
||||
|
||||
namespace {
|
||||
|
||||
libmv_Features *libmv_featuresFromVector(
|
||||
const libmv::vector<Feature>& features) {
|
||||
libmv_Features* libmv_features = LIBMV_STRUCT_NEW(libmv_Features, 1);
|
||||
int count = features.size();
|
||||
if (count) {
|
||||
libmv_features->features = LIBMV_STRUCT_NEW(Feature, count);
|
||||
for (int i = 0; i < count; i++) {
|
||||
libmv_features->features[i] = features.at(i);
|
||||
}
|
||||
} else {
|
||||
libmv_features->features = NULL;
|
||||
}
|
||||
libmv_features->count = count;
|
||||
return libmv_features;
|
||||
}
|
||||
|
||||
void libmv_convertDetectorOptions(libmv_DetectOptions *options,
|
||||
DetectOptions *detector_options) {
|
||||
switch (options->detector) {
|
||||
#define LIBMV_CONVERT(the_detector) \
|
||||
case LIBMV_DETECTOR_ ## the_detector: \
|
||||
detector_options->type = DetectOptions::the_detector; \
|
||||
break;
|
||||
LIBMV_CONVERT(FAST)
|
||||
LIBMV_CONVERT(MORAVEC)
|
||||
LIBMV_CONVERT(HARRIS)
|
||||
#undef LIBMV_CONVERT
|
||||
}
|
||||
detector_options->margin = options->margin;
|
||||
detector_options->min_distance = options->min_distance;
|
||||
detector_options->fast_min_trackness = options->fast_min_trackness;
|
||||
detector_options->moravec_max_count = options->moravec_max_count;
|
||||
detector_options->moravec_pattern = options->moravec_pattern;
|
||||
detector_options->harris_threshold = options->harris_threshold;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
libmv_Features *libmv_detectFeaturesByte(const unsigned char* image_buffer,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
libmv_DetectOptions* options) {
|
||||
// Prepare the image.
|
||||
FloatImage image;
|
||||
libmv_byteBufferToFloatImage(image_buffer, width, height, channels, &image);
|
||||
|
||||
// Configure detector.
|
||||
DetectOptions detector_options;
|
||||
libmv_convertDetectorOptions(options, &detector_options);
|
||||
|
||||
// Run the detector.
|
||||
libmv::vector<Feature> detected_features;
|
||||
Detect(image, detector_options, &detected_features);
|
||||
|
||||
// Convert result to C-API.
|
||||
libmv_Features* result = libmv_featuresFromVector(detected_features);
|
||||
return result;
|
||||
}
|
||||
|
||||
libmv_Features* libmv_detectFeaturesFloat(const float* image_buffer,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
libmv_DetectOptions* options) {
|
||||
// Prepare the image.
|
||||
FloatImage image;
|
||||
libmv_floatBufferToFloatImage(image_buffer, width, height, channels, &image);
|
||||
|
||||
// Configure detector.
|
||||
DetectOptions detector_options;
|
||||
libmv_convertDetectorOptions(options, &detector_options);
|
||||
|
||||
// Run the detector.
|
||||
libmv::vector<Feature> detected_features;
|
||||
Detect(image, detector_options, &detected_features);
|
||||
|
||||
// Convert result to C-API.
|
||||
libmv_Features* result = libmv_featuresFromVector(detected_features);
|
||||
return result;
|
||||
}
|
||||
|
||||
void libmv_featuresDestroy(libmv_Features* libmv_features) {
|
||||
if (libmv_features->features) {
|
||||
LIBMV_STRUCT_DELETE(libmv_features->features);
|
||||
}
|
||||
LIBMV_STRUCT_DELETE(libmv_features);
|
||||
}
|
||||
|
||||
int libmv_countFeatures(const libmv_Features* libmv_features) {
|
||||
return libmv_features->count;
|
||||
}
|
||||
|
||||
void libmv_getFeature(const libmv_Features* libmv_features,
|
||||
int number,
|
||||
double* x,
|
||||
double* y,
|
||||
double* score,
|
||||
double* size) {
|
||||
Feature &feature = libmv_features->features[number];
|
||||
*x = feature.x;
|
||||
*y = feature.y;
|
||||
*score = feature.score;
|
||||
*size = feature.size;
|
||||
}
|
77
extern/libmv/intern/detector.h
vendored
Normal file
77
extern/libmv/intern/detector.h
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_DETECTOR_H_
|
||||
#define LIBMV_C_API_DETECTOR_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct libmv_Features libmv_Features;
|
||||
|
||||
enum {
|
||||
LIBMV_DETECTOR_FAST,
|
||||
LIBMV_DETECTOR_MORAVEC,
|
||||
LIBMV_DETECTOR_HARRIS,
|
||||
};
|
||||
|
||||
typedef struct libmv_DetectOptions {
|
||||
int detector;
|
||||
int margin;
|
||||
int min_distance;
|
||||
int fast_min_trackness;
|
||||
int moravec_max_count;
|
||||
unsigned char *moravec_pattern;
|
||||
double harris_threshold;
|
||||
} libmv_DetectOptions;
|
||||
|
||||
libmv_Features* libmv_detectFeaturesByte(const unsigned char* image_buffer,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
libmv_DetectOptions* options);
|
||||
|
||||
libmv_Features* libmv_detectFeaturesFloat(const float* image_buffer,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
libmv_DetectOptions* options);
|
||||
|
||||
void libmv_featuresDestroy(libmv_Features* libmv_features);
|
||||
int libmv_countFeatures(const libmv_Features* libmv_features);
|
||||
void libmv_getFeature(const libmv_Features* libmv_features,
|
||||
int number,
|
||||
double* x,
|
||||
double* y,
|
||||
double* score,
|
||||
double* size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_DETECTOR_H_
|
164
extern/libmv/intern/frame_accessor.cc
vendored
Normal file
164
extern/libmv/intern/frame_accessor.cc
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2014 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/frame_accessor.h"
|
||||
#include "intern/image.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/autotrack/frame_accessor.h"
|
||||
#include "libmv/autotrack/region.h"
|
||||
#include "libmv/image/image.h"
|
||||
|
||||
namespace {
|
||||
|
||||
using libmv::FloatImage;
|
||||
using mv::FrameAccessor;
|
||||
using mv::Region;
|
||||
|
||||
struct LibmvFrameAccessor : public FrameAccessor {
|
||||
LibmvFrameAccessor(libmv_FrameAccessorUserData* user_data,
|
||||
libmv_GetImageCallback get_image_callback,
|
||||
libmv_ReleaseImageCallback release_image_callback)
|
||||
: user_data_(user_data),
|
||||
get_image_callback_(get_image_callback),
|
||||
release_image_callback_(release_image_callback) { }
|
||||
|
||||
libmv_InputMode get_libmv_input_mode(InputMode input_mode) {
|
||||
switch (input_mode) {
|
||||
#define CHECK_INPUT_MODE(mode) \
|
||||
case mode: \
|
||||
return LIBMV_IMAGE_MODE_ ## mode;
|
||||
CHECK_INPUT_MODE(MONO)
|
||||
CHECK_INPUT_MODE(RGBA)
|
||||
#undef CHECK_INPUT_MODE
|
||||
}
|
||||
assert(!"unknown input mode passed from Libmv.");
|
||||
// TODO(sergey): Proper error handling here in the future.
|
||||
return LIBMV_IMAGE_MODE_MONO;
|
||||
}
|
||||
|
||||
void get_libmv_region(const Region& region,
|
||||
libmv_Region* libmv_region) {
|
||||
libmv_region->min[0] = region.min(0);
|
||||
libmv_region->min[1] = region.min(1);
|
||||
libmv_region->max[0] = region.max(0);
|
||||
libmv_region->max[1] = region.max(1);
|
||||
}
|
||||
|
||||
Key GetImage(int clip,
|
||||
int frame,
|
||||
InputMode input_mode,
|
||||
int downscale,
|
||||
const Region* region,
|
||||
const Transform* transform,
|
||||
FloatImage* destination) {
|
||||
float *float_buffer;
|
||||
int width, height, channels;
|
||||
libmv_Region libmv_region;
|
||||
if (region) {
|
||||
get_libmv_region(*region, &libmv_region);
|
||||
}
|
||||
Key cache_key = get_image_callback_(user_data_,
|
||||
clip,
|
||||
frame,
|
||||
get_libmv_input_mode(input_mode),
|
||||
downscale,
|
||||
region != NULL ? &libmv_region : NULL,
|
||||
(libmv_FrameTransform*) transform,
|
||||
&float_buffer,
|
||||
&width,
|
||||
&height,
|
||||
&channels);
|
||||
|
||||
// TODO(sergey): Dumb code for until we can set data directly.
|
||||
FloatImage temp_image(float_buffer,
|
||||
height,
|
||||
width,
|
||||
channels);
|
||||
destination->CopyFrom(temp_image);
|
||||
|
||||
return cache_key;
|
||||
}
|
||||
|
||||
void ReleaseImage(Key cache_key) {
|
||||
release_image_callback_(cache_key);
|
||||
}
|
||||
|
||||
bool GetClipDimensions(int clip, int *width, int *height) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int NumClips() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int NumFrames(int clip) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
libmv_FrameAccessorUserData* user_data_;
|
||||
libmv_GetImageCallback get_image_callback_;
|
||||
libmv_ReleaseImageCallback release_image_callback_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
libmv_FrameAccessor* libmv_FrameAccessorNew(
|
||||
libmv_FrameAccessorUserData* user_data,
|
||||
libmv_GetImageCallback get_image_callback,
|
||||
libmv_ReleaseImageCallback release_image_callback) {
|
||||
return (libmv_FrameAccessor*) LIBMV_OBJECT_NEW(LibmvFrameAccessor,
|
||||
user_data,
|
||||
get_image_callback,
|
||||
release_image_callback);
|
||||
}
|
||||
|
||||
void libmv_FrameAccessorDestroy(libmv_FrameAccessor* frame_accessor) {
|
||||
LIBMV_OBJECT_DELETE(frame_accessor, LibmvFrameAccessor);
|
||||
}
|
||||
|
||||
int64_t libmv_frameAccessorgetTransformKey(const libmv_FrameTransform *transform) {
|
||||
return ((FrameAccessor::Transform*) transform)->key();
|
||||
}
|
||||
|
||||
void libmv_frameAccessorgetTransformRun(const libmv_FrameTransform *transform,
|
||||
const libmv_FloatImage *input_image,
|
||||
libmv_FloatImage *output_image) {
|
||||
const FloatImage input(input_image->buffer,
|
||||
input_image->height,
|
||||
input_image->width,
|
||||
input_image->channels);
|
||||
|
||||
FloatImage output;
|
||||
((FrameAccessor::Transform*) transform)->run(input,
|
||||
&output);
|
||||
|
||||
int num_pixels = output.Width() *output.Height() * output.Depth();
|
||||
output_image->buffer = new float[num_pixels];
|
||||
memcpy(output_image->buffer, output.Data(), num_pixels * sizeof(float));
|
||||
output_image->width = output.Width();
|
||||
output_image->height = output.Height();
|
||||
output_image->channels = output.Depth();
|
||||
}
|
79
extern/libmv/intern/frame_accessor.h
vendored
Normal file
79
extern/libmv/intern/frame_accessor.h
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2014 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_FRAME_ACCESSOR_H_
|
||||
#define LIBMV_C_API_FRAME_ACCESSOR_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "intern/image.h"
|
||||
#include "intern/region.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct libmv_FrameAccessor libmv_FrameAccessor;
|
||||
typedef struct libmv_FrameTransform libmv_FrameTransform;
|
||||
typedef struct libmv_FrameAccessorUserData libmv_FrameAccessorUserData;
|
||||
typedef void *libmv_CacheKey;
|
||||
|
||||
typedef enum {
|
||||
LIBMV_IMAGE_MODE_MONO,
|
||||
LIBMV_IMAGE_MODE_RGBA,
|
||||
} libmv_InputMode;
|
||||
|
||||
typedef libmv_CacheKey (*libmv_GetImageCallback) (
|
||||
libmv_FrameAccessorUserData* user_data,
|
||||
int clip,
|
||||
int frame,
|
||||
libmv_InputMode input_mode,
|
||||
int downscale,
|
||||
const libmv_Region* region,
|
||||
const libmv_FrameTransform* transform,
|
||||
float** destination,
|
||||
int* width,
|
||||
int* height,
|
||||
int* channels);
|
||||
|
||||
typedef void (*libmv_ReleaseImageCallback) (libmv_CacheKey cache_key);
|
||||
|
||||
libmv_FrameAccessor* libmv_FrameAccessorNew(
|
||||
libmv_FrameAccessorUserData* user_data,
|
||||
libmv_GetImageCallback get_image_callback,
|
||||
libmv_ReleaseImageCallback release_image_callback);
|
||||
void libmv_FrameAccessorDestroy(libmv_FrameAccessor* frame_accessor);
|
||||
|
||||
int64_t libmv_frameAccessorgetTransformKey(const libmv_FrameTransform *transform);
|
||||
|
||||
void libmv_frameAccessorgetTransformRun(const libmv_FrameTransform *transform,
|
||||
const libmv_FloatImage *input_image,
|
||||
libmv_FloatImage *output_image);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_FRAME_ACCESSOR_H_
|
59
extern/libmv/intern/homography.cc
vendored
Normal file
59
extern/libmv/intern/homography.cc
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/homography.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/logging/logging.h"
|
||||
#include "libmv/multiview/homography.h"
|
||||
|
||||
void libmv_homography2DFromCorrespondencesEuc(/* const */ double (*x1)[2],
|
||||
/* const */ double (*x2)[2],
|
||||
int num_points,
|
||||
double H[3][3]) {
|
||||
libmv::Mat x1_mat, x2_mat;
|
||||
libmv::Mat3 H_mat;
|
||||
|
||||
x1_mat.resize(2, num_points);
|
||||
x2_mat.resize(2, num_points);
|
||||
|
||||
for (int i = 0; i < num_points; i++) {
|
||||
x1_mat.col(i) = libmv::Vec2(x1[i][0], x1[i][1]);
|
||||
x2_mat.col(i) = libmv::Vec2(x2[i][0], x2[i][1]);
|
||||
}
|
||||
|
||||
LG << "x1: " << x1_mat;
|
||||
LG << "x2: " << x2_mat;
|
||||
|
||||
libmv::EstimateHomographyOptions options;
|
||||
libmv::EstimateHomography2DFromCorrespondences(x1_mat,
|
||||
x2_mat,
|
||||
options,
|
||||
&H_mat);
|
||||
|
||||
LG << "H: " << H_mat;
|
||||
|
||||
memcpy(H, H_mat.data(), 9 * sizeof(double));
|
||||
}
|
43
extern/libmv/intern/homography.h
vendored
Normal file
43
extern/libmv/intern/homography.h
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_HOMOGRAPHY_H_
|
||||
#define LIBMV_C_API_HOMOGRAPHY_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void libmv_homography2DFromCorrespondencesEuc(/* const */ double (*x1)[2],
|
||||
/* const */ double (*x2)[2],
|
||||
int num_points,
|
||||
double H[3][3]);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_HOMOGRAPHY_H_
|
272
extern/libmv/intern/image.cc
vendored
Normal file
272
extern/libmv/intern/image.cc
vendored
Normal file
@@ -0,0 +1,272 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/image.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/tracking/track_region.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <png.h>
|
||||
|
||||
using libmv::FloatImage;
|
||||
using libmv::SamplePlanarPatch;
|
||||
|
||||
void libmv_floatImageDestroy(libmv_FloatImage *image) {
|
||||
delete [] image->buffer;
|
||||
}
|
||||
|
||||
/* Image <-> buffers conversion */
|
||||
|
||||
void libmv_byteBufferToFloatImage(const unsigned char* buffer,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
FloatImage* image) {
|
||||
image->Resize(height, width, channels);
|
||||
for (int y = 0, a = 0; y < height; y++) {
|
||||
for (int x = 0; x < width; x++) {
|
||||
for (int k = 0; k < channels; k++) {
|
||||
(*image)(y, x, k) = (float)buffer[a++] / 255.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void libmv_floatBufferToFloatImage(const float* buffer,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
FloatImage* image) {
|
||||
image->Resize(height, width, channels);
|
||||
for (int y = 0, a = 0; y < height; y++) {
|
||||
for (int x = 0; x < width; x++) {
|
||||
for (int k = 0; k < channels; k++) {
|
||||
(*image)(y, x, k) = buffer[a++];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void libmv_floatImageToFloatBuffer(const FloatImage &image,
|
||||
float* buffer) {
|
||||
for (int y = 0, a = 0; y < image.Height(); y++) {
|
||||
for (int x = 0; x < image.Width(); x++) {
|
||||
for (int k = 0; k < image.Depth(); k++) {
|
||||
buffer[a++] = image(y, x, k);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void libmv_floatImageToByteBuffer(const libmv::FloatImage &image,
|
||||
unsigned char* buffer) {
|
||||
for (int y = 0, a= 0; y < image.Height(); y++) {
|
||||
for (int x = 0; x < image.Width(); x++) {
|
||||
for (int k = 0; k < image.Depth(); k++) {
|
||||
buffer[a++] = image(y, x, k) * 255.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool savePNGImage(png_bytep* row_pointers,
|
||||
int width,
|
||||
int height,
|
||||
int depth,
|
||||
int color_type,
|
||||
const char* file_name) {
|
||||
png_infop info_ptr;
|
||||
png_structp png_ptr;
|
||||
FILE *fp = fopen(file_name, "wb");
|
||||
|
||||
if (fp == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Initialize stuff */
|
||||
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||
info_ptr = png_create_info_struct(png_ptr);
|
||||
|
||||
if (setjmp(png_jmpbuf(png_ptr))) {
|
||||
fclose(fp);
|
||||
return false;
|
||||
}
|
||||
|
||||
png_init_io(png_ptr, fp);
|
||||
|
||||
/* Write PNG header. */
|
||||
if (setjmp(png_jmpbuf(png_ptr))) {
|
||||
fclose(fp);
|
||||
return false;
|
||||
}
|
||||
|
||||
png_set_IHDR(png_ptr,
|
||||
info_ptr,
|
||||
width,
|
||||
height,
|
||||
depth,
|
||||
color_type,
|
||||
PNG_INTERLACE_NONE,
|
||||
PNG_COMPRESSION_TYPE_BASE,
|
||||
PNG_FILTER_TYPE_BASE);
|
||||
|
||||
png_write_info(png_ptr, info_ptr);
|
||||
|
||||
/* Write bytes/ */
|
||||
if (setjmp(png_jmpbuf(png_ptr))) {
|
||||
fclose(fp);
|
||||
return false;
|
||||
}
|
||||
|
||||
png_write_image(png_ptr, row_pointers);
|
||||
|
||||
/* End write/ */
|
||||
if (setjmp(png_jmpbuf(png_ptr))) {
|
||||
fclose(fp);
|
||||
return false;
|
||||
}
|
||||
|
||||
png_write_end(png_ptr, NULL);
|
||||
fclose(fp);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool libmv_saveImage(const FloatImage& image,
|
||||
const char* prefix,
|
||||
int x0,
|
||||
int y0) {
|
||||
int x, y;
|
||||
png_bytep *row_pointers;
|
||||
|
||||
assert(image.Depth() == 1);
|
||||
|
||||
row_pointers = new png_bytep[image.Height()];
|
||||
|
||||
for (y = 0; y < image.Height(); y++) {
|
||||
row_pointers[y] = new png_byte[4 * image.Width()];
|
||||
|
||||
for (x = 0; x < image.Width(); x++) {
|
||||
if (x0 == x && image.Height() - y0 - 1 == y) {
|
||||
row_pointers[y][x * 4 + 0] = 255;
|
||||
row_pointers[y][x * 4 + 1] = 0;
|
||||
row_pointers[y][x * 4 + 2] = 0;
|
||||
row_pointers[y][x * 4 + 3] = 255;
|
||||
} else {
|
||||
float pixel = image(image.Height() - y - 1, x, 0);
|
||||
row_pointers[y][x * 4 + 0] = pixel * 255;
|
||||
row_pointers[y][x * 4 + 1] = pixel * 255;
|
||||
row_pointers[y][x * 4 + 2] = pixel * 255;
|
||||
row_pointers[y][x * 4 + 3] = 255;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int image_counter = 0;
|
||||
char file_name[128];
|
||||
snprintf(file_name, sizeof(file_name),
|
||||
"%s_%02d.png",
|
||||
prefix, ++image_counter);
|
||||
bool result = savePNGImage(row_pointers,
|
||||
image.Width(),
|
||||
image.Height(),
|
||||
8,
|
||||
PNG_COLOR_TYPE_RGBA,
|
||||
file_name);
|
||||
|
||||
for (y = 0; y < image.Height(); y++) {
|
||||
delete [] row_pointers[y];
|
||||
}
|
||||
delete [] row_pointers;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void libmv_samplePlanarPatchFloat(const float* image,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
const double* xs,
|
||||
const double* ys,
|
||||
int num_samples_x,
|
||||
int num_samples_y,
|
||||
const float* mask,
|
||||
float* patch,
|
||||
double* warped_position_x,
|
||||
double* warped_position_y) {
|
||||
FloatImage libmv_image, libmv_patch, libmv_mask;
|
||||
FloatImage *libmv_mask_for_sample = NULL;
|
||||
|
||||
libmv_floatBufferToFloatImage(image, width, height, channels, &libmv_image);
|
||||
|
||||
if (mask) {
|
||||
libmv_floatBufferToFloatImage(mask, width, height, 1, &libmv_mask);
|
||||
libmv_mask_for_sample = &libmv_mask;
|
||||
}
|
||||
|
||||
SamplePlanarPatch(libmv_image,
|
||||
xs, ys,
|
||||
num_samples_x, num_samples_y,
|
||||
libmv_mask_for_sample,
|
||||
&libmv_patch,
|
||||
warped_position_x,
|
||||
warped_position_y);
|
||||
|
||||
libmv_floatImageToFloatBuffer(libmv_patch, patch);
|
||||
}
|
||||
|
||||
void libmv_samplePlanarPatchByte(const unsigned char* image,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
const double* xs,
|
||||
const double* ys,
|
||||
int num_samples_x,
|
||||
int num_samples_y,
|
||||
const float* mask,
|
||||
unsigned char* patch,
|
||||
double* warped_position_x,
|
||||
double* warped_position_y) {
|
||||
libmv::FloatImage libmv_image, libmv_patch, libmv_mask;
|
||||
libmv::FloatImage *libmv_mask_for_sample = NULL;
|
||||
|
||||
libmv_byteBufferToFloatImage(image, width, height, channels, &libmv_image);
|
||||
|
||||
if (mask) {
|
||||
libmv_floatBufferToFloatImage(mask, width, height, 1, &libmv_mask);
|
||||
libmv_mask_for_sample = &libmv_mask;
|
||||
}
|
||||
|
||||
libmv::SamplePlanarPatch(libmv_image,
|
||||
xs, ys,
|
||||
num_samples_x, num_samples_y,
|
||||
libmv_mask_for_sample,
|
||||
&libmv_patch,
|
||||
warped_position_x,
|
||||
warped_position_y);
|
||||
|
||||
libmv_floatImageToByteBuffer(libmv_patch, patch);
|
||||
}
|
99
extern/libmv/intern/image.h
vendored
Normal file
99
extern/libmv/intern/image.h
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_IMAGE_H_
|
||||
#define LIBMV_IMAGE_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
# include "libmv/image/image.h"
|
||||
void libmv_byteBufferToFloatImage(const unsigned char* buffer,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
libmv::FloatImage* image);
|
||||
|
||||
void libmv_floatBufferToFloatImage(const float* buffer,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
libmv::FloatImage* image);
|
||||
|
||||
void libmv_floatImageToFloatBuffer(const libmv::FloatImage& image,
|
||||
float *buffer);
|
||||
|
||||
void libmv_floatImageToByteBuffer(const libmv::FloatImage& image,
|
||||
unsigned char* buffer);
|
||||
|
||||
bool libmv_saveImage(const libmv::FloatImage& image,
|
||||
const char* prefix,
|
||||
int x0,
|
||||
int y0);
|
||||
#endif // __cplusplus
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct libmv_FloatImage {
|
||||
float *buffer;
|
||||
int width;
|
||||
int height;
|
||||
int channels;
|
||||
} libmv_FloatImage;
|
||||
|
||||
void libmv_floatImageDestroy(libmv_FloatImage *image);
|
||||
|
||||
void libmv_samplePlanarPatchFloat(const float* image,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
const double* xs,
|
||||
const double* ys,
|
||||
int num_samples_x,
|
||||
int num_samples_y,
|
||||
const float* mask,
|
||||
float* patch,
|
||||
double* warped_position_x,
|
||||
double* warped_position_y);
|
||||
|
||||
void libmv_samplePlanarPatchByte(const unsigned char* image,
|
||||
int width,
|
||||
int height,
|
||||
int channels,
|
||||
const double* xs,
|
||||
const double* ys,
|
||||
int num_samples_x,
|
||||
int num_samples_y,
|
||||
const float* mask,
|
||||
unsigned char* patch,
|
||||
double* warped_position_x,
|
||||
double* warped_position_y);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_IMAGE_H_
|
55
extern/libmv/intern/logging.cc
vendored
Normal file
55
extern/libmv/intern/logging.cc
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/logging.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/logging/logging.h"
|
||||
|
||||
void libmv_initLogging(const char* argv0) {
|
||||
// Make it so FATAL messages are always print into console.
|
||||
char severity_fatal[32];
|
||||
snprintf(severity_fatal, sizeof(severity_fatal), "%d",
|
||||
google::GLOG_FATAL);
|
||||
|
||||
google::InitGoogleLogging(argv0);
|
||||
google::SetCommandLineOption("logtostderr", "1");
|
||||
google::SetCommandLineOption("v", "0");
|
||||
google::SetCommandLineOption("stderrthreshold", severity_fatal);
|
||||
google::SetCommandLineOption("minloglevel", severity_fatal);
|
||||
}
|
||||
|
||||
void libmv_startDebugLogging(void) {
|
||||
google::SetCommandLineOption("logtostderr", "1");
|
||||
google::SetCommandLineOption("v", "2");
|
||||
google::SetCommandLineOption("stderrthreshold", "1");
|
||||
google::SetCommandLineOption("minloglevel", "0");
|
||||
}
|
||||
|
||||
void libmv_setLoggingVerbosity(int verbosity) {
|
||||
char val[10];
|
||||
snprintf(val, sizeof(val), "%d", verbosity);
|
||||
google::SetCommandLineOption("v", val);
|
||||
}
|
@@ -15,39 +15,33 @@
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file source/blender/freestyle/intern/python/StrokeShader/BPy_StrokeTextureShader.h
|
||||
* \ingroup freestyle
|
||||
*/
|
||||
|
||||
#ifndef __FREESTYLE_PYTHON_STROKETEXTURESHADER_H__
|
||||
#define __FREESTYLE_PYTHON_STROKETEXTURESHADER_H__
|
||||
|
||||
#include "../BPy_StrokeShader.h"
|
||||
#ifndef LIBMV_C_API_LOGGING_H_
|
||||
#define LIBMV_C_API_LOGGING_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialize GLog logging.
|
||||
void libmv_initLogging(const char* argv0);
|
||||
|
||||
extern PyTypeObject StrokeTextureShader_Type;
|
||||
// Switch Glog to debug logging level.
|
||||
void libmv_startDebugLogging(void);
|
||||
|
||||
#define BPy_StrokeTextureShader_Check(v) (PyObject_IsInstance((PyObject *)v, (PyObject *)&StrokeTextureShader_Type))
|
||||
|
||||
/*---------------------------Python BPy_StrokeTextureShader structure definition----------*/
|
||||
typedef struct {
|
||||
BPy_StrokeShader py_ss;
|
||||
} BPy_StrokeTextureShader;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Set GLog logging verbosity level.
|
||||
void libmv_setLoggingVerbosity(int verbosity);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __FREESTYLE_PYTHON_STROKETEXTURESHADER_H__ */
|
||||
#endif // LIBMV_C_API_LOGGING_H_
|
542
extern/libmv/intern/reconstruction.cc
vendored
Normal file
542
extern/libmv/intern/reconstruction.cc
vendored
Normal file
@@ -0,0 +1,542 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/reconstruction.h"
|
||||
#include "intern/camera_intrinsics.h"
|
||||
#include "intern/tracks.h"
|
||||
#include "intern/utildefines.h"
|
||||
|
||||
#include "libmv/logging/logging.h"
|
||||
#include "libmv/simple_pipeline/bundle.h"
|
||||
#include "libmv/simple_pipeline/keyframe_selection.h"
|
||||
#include "libmv/simple_pipeline/initialize_reconstruction.h"
|
||||
#include "libmv/simple_pipeline/modal_solver.h"
|
||||
#include "libmv/simple_pipeline/pipeline.h"
|
||||
#include "libmv/simple_pipeline/reconstruction_scale.h"
|
||||
#include "libmv/simple_pipeline/tracks.h"
|
||||
|
||||
using libmv::CameraIntrinsics;
|
||||
using libmv::EuclideanCamera;
|
||||
using libmv::EuclideanPoint;
|
||||
using libmv::EuclideanReconstruction;
|
||||
using libmv::EuclideanScaleToUnity;
|
||||
using libmv::Marker;
|
||||
using libmv::ProgressUpdateCallback;
|
||||
|
||||
using libmv::PolynomialCameraIntrinsics;
|
||||
using libmv::Tracks;
|
||||
using libmv::EuclideanBundle;
|
||||
using libmv::EuclideanCompleteReconstruction;
|
||||
using libmv::EuclideanReconstructTwoFrames;
|
||||
using libmv::EuclideanReprojectionError;
|
||||
|
||||
struct libmv_Reconstruction {
|
||||
EuclideanReconstruction reconstruction;
|
||||
|
||||
/* Used for per-track average error calculation after reconstruction */
|
||||
Tracks tracks;
|
||||
CameraIntrinsics *intrinsics;
|
||||
|
||||
double error;
|
||||
bool is_valid;
|
||||
};
|
||||
|
||||
namespace {
|
||||
|
||||
class ReconstructUpdateCallback : public ProgressUpdateCallback {
|
||||
public:
|
||||
ReconstructUpdateCallback(
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void *callback_customdata) {
|
||||
progress_update_callback_ = progress_update_callback;
|
||||
callback_customdata_ = callback_customdata;
|
||||
}
|
||||
|
||||
void invoke(double progress, const char* message) {
|
||||
if (progress_update_callback_) {
|
||||
progress_update_callback_(callback_customdata_, progress, message);
|
||||
}
|
||||
}
|
||||
protected:
|
||||
reconstruct_progress_update_cb progress_update_callback_;
|
||||
void* callback_customdata_;
|
||||
};
|
||||
|
||||
void libmv_solveRefineIntrinsics(
|
||||
const Tracks &tracks,
|
||||
const int refine_intrinsics,
|
||||
const int bundle_constraints,
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void* callback_customdata,
|
||||
EuclideanReconstruction* reconstruction,
|
||||
CameraIntrinsics* intrinsics) {
|
||||
/* only a few combinations are supported but trust the caller/ */
|
||||
int bundle_intrinsics = 0;
|
||||
|
||||
if (refine_intrinsics & LIBMV_REFINE_FOCAL_LENGTH) {
|
||||
bundle_intrinsics |= libmv::BUNDLE_FOCAL_LENGTH;
|
||||
}
|
||||
if (refine_intrinsics & LIBMV_REFINE_PRINCIPAL_POINT) {
|
||||
bundle_intrinsics |= libmv::BUNDLE_PRINCIPAL_POINT;
|
||||
}
|
||||
if (refine_intrinsics & LIBMV_REFINE_RADIAL_DISTORTION_K1) {
|
||||
bundle_intrinsics |= libmv::BUNDLE_RADIAL_K1;
|
||||
}
|
||||
if (refine_intrinsics & LIBMV_REFINE_RADIAL_DISTORTION_K2) {
|
||||
bundle_intrinsics |= libmv::BUNDLE_RADIAL_K2;
|
||||
}
|
||||
|
||||
progress_update_callback(callback_customdata, 1.0, "Refining solution");
|
||||
|
||||
EuclideanBundleCommonIntrinsics(tracks,
|
||||
bundle_intrinsics,
|
||||
bundle_constraints,
|
||||
reconstruction,
|
||||
intrinsics);
|
||||
}
|
||||
|
||||
void finishReconstruction(
|
||||
const Tracks &tracks,
|
||||
const CameraIntrinsics &camera_intrinsics,
|
||||
libmv_Reconstruction *libmv_reconstruction,
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void *callback_customdata) {
|
||||
EuclideanReconstruction &reconstruction =
|
||||
libmv_reconstruction->reconstruction;
|
||||
|
||||
/* Reprojection error calculation. */
|
||||
progress_update_callback(callback_customdata, 1.0, "Finishing solution");
|
||||
libmv_reconstruction->tracks = tracks;
|
||||
libmv_reconstruction->error = EuclideanReprojectionError(tracks,
|
||||
reconstruction,
|
||||
camera_intrinsics);
|
||||
}
|
||||
|
||||
bool selectTwoKeyframesBasedOnGRICAndVariance(
|
||||
Tracks& tracks,
|
||||
Tracks& normalized_tracks,
|
||||
CameraIntrinsics& camera_intrinsics,
|
||||
int& keyframe1,
|
||||
int& keyframe2) {
|
||||
libmv::vector<int> keyframes;
|
||||
|
||||
/* Get list of all keyframe candidates first. */
|
||||
SelectKeyframesBasedOnGRICAndVariance(normalized_tracks,
|
||||
camera_intrinsics,
|
||||
keyframes);
|
||||
|
||||
if (keyframes.size() < 2) {
|
||||
LG << "Not enough keyframes detected by GRIC";
|
||||
return false;
|
||||
} else if (keyframes.size() == 2) {
|
||||
keyframe1 = keyframes[0];
|
||||
keyframe2 = keyframes[1];
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Now choose two keyframes with minimal reprojection error after initial
|
||||
* reconstruction choose keyframes with the least reprojection error after
|
||||
* solving from two candidate keyframes.
|
||||
*
|
||||
* In fact, currently libmv returns single pair only, so this code will
|
||||
* not actually run. But in the future this could change, so let's stay
|
||||
* prepared.
|
||||
*/
|
||||
int previous_keyframe = keyframes[0];
|
||||
double best_error = std::numeric_limits<double>::max();
|
||||
for (int i = 1; i < keyframes.size(); i++) {
|
||||
EuclideanReconstruction reconstruction;
|
||||
int current_keyframe = keyframes[i];
|
||||
libmv::vector<Marker> keyframe_markers =
|
||||
normalized_tracks.MarkersForTracksInBothImages(previous_keyframe,
|
||||
current_keyframe);
|
||||
|
||||
Tracks keyframe_tracks(keyframe_markers);
|
||||
|
||||
/* get a solution from two keyframes only */
|
||||
EuclideanReconstructTwoFrames(keyframe_markers, &reconstruction);
|
||||
EuclideanBundle(keyframe_tracks, &reconstruction);
|
||||
EuclideanCompleteReconstruction(keyframe_tracks,
|
||||
&reconstruction,
|
||||
NULL);
|
||||
|
||||
double current_error = EuclideanReprojectionError(tracks,
|
||||
reconstruction,
|
||||
camera_intrinsics);
|
||||
|
||||
LG << "Error between " << previous_keyframe
|
||||
<< " and " << current_keyframe
|
||||
<< ": " << current_error;
|
||||
|
||||
if (current_error < best_error) {
|
||||
best_error = current_error;
|
||||
keyframe1 = previous_keyframe;
|
||||
keyframe2 = current_keyframe;
|
||||
}
|
||||
|
||||
previous_keyframe = current_keyframe;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Marker libmv_projectMarker(const EuclideanPoint& point,
|
||||
const EuclideanCamera& camera,
|
||||
const CameraIntrinsics& intrinsics) {
|
||||
libmv::Vec3 projected = camera.R * point.X + camera.t;
|
||||
projected /= projected(2);
|
||||
|
||||
libmv::Marker reprojected_marker;
|
||||
intrinsics.ApplyIntrinsics(projected(0), projected(1),
|
||||
&reprojected_marker.x,
|
||||
&reprojected_marker.y);
|
||||
|
||||
reprojected_marker.image = camera.image;
|
||||
reprojected_marker.track = point.track;
|
||||
return reprojected_marker;
|
||||
}
|
||||
|
||||
void libmv_getNormalizedTracks(const Tracks &tracks,
|
||||
const CameraIntrinsics &camera_intrinsics,
|
||||
Tracks *normalized_tracks) {
|
||||
libmv::vector<Marker> markers = tracks.AllMarkers();
|
||||
for (int i = 0; i < markers.size(); ++i) {
|
||||
Marker &marker = markers[i];
|
||||
camera_intrinsics.InvertIntrinsics(marker.x, marker.y,
|
||||
&marker.x, &marker.y);
|
||||
normalized_tracks->Insert(marker.image,
|
||||
marker.track,
|
||||
marker.x, marker.y,
|
||||
marker.weight);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
libmv_Reconstruction *libmv_solveReconstruction(
|
||||
const libmv_Tracks* libmv_tracks,
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
libmv_ReconstructionOptions* libmv_reconstruction_options,
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void* callback_customdata) {
|
||||
libmv_Reconstruction *libmv_reconstruction =
|
||||
LIBMV_OBJECT_NEW(libmv_Reconstruction);
|
||||
|
||||
Tracks &tracks = *((Tracks *) libmv_tracks);
|
||||
EuclideanReconstruction &reconstruction =
|
||||
libmv_reconstruction->reconstruction;
|
||||
|
||||
ReconstructUpdateCallback update_callback =
|
||||
ReconstructUpdateCallback(progress_update_callback,
|
||||
callback_customdata);
|
||||
|
||||
/* Retrieve reconstruction options from C-API to libmv API. */
|
||||
CameraIntrinsics *camera_intrinsics;
|
||||
camera_intrinsics = libmv_reconstruction->intrinsics =
|
||||
libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
|
||||
|
||||
/* Invert the camera intrinsics/ */
|
||||
Tracks normalized_tracks;
|
||||
libmv_getNormalizedTracks(tracks, *camera_intrinsics, &normalized_tracks);
|
||||
|
||||
/* keyframe selection. */
|
||||
int keyframe1 = libmv_reconstruction_options->keyframe1,
|
||||
keyframe2 = libmv_reconstruction_options->keyframe2;
|
||||
|
||||
if (libmv_reconstruction_options->select_keyframes) {
|
||||
LG << "Using automatic keyframe selection";
|
||||
|
||||
update_callback.invoke(0, "Selecting keyframes");
|
||||
|
||||
selectTwoKeyframesBasedOnGRICAndVariance(tracks,
|
||||
normalized_tracks,
|
||||
*camera_intrinsics,
|
||||
keyframe1,
|
||||
keyframe2);
|
||||
|
||||
/* so keyframes in the interface would be updated */
|
||||
libmv_reconstruction_options->keyframe1 = keyframe1;
|
||||
libmv_reconstruction_options->keyframe2 = keyframe2;
|
||||
}
|
||||
|
||||
/* Actual reconstruction. */
|
||||
LG << "frames to init from: " << keyframe1 << " " << keyframe2;
|
||||
|
||||
libmv::vector<Marker> keyframe_markers =
|
||||
normalized_tracks.MarkersForTracksInBothImages(keyframe1, keyframe2);
|
||||
|
||||
LG << "number of markers for init: " << keyframe_markers.size();
|
||||
|
||||
if (keyframe_markers.size() < 8) {
|
||||
LG << "No enough markers to initialize from";
|
||||
libmv_reconstruction->is_valid = false;
|
||||
return libmv_reconstruction;
|
||||
}
|
||||
|
||||
update_callback.invoke(0, "Initial reconstruction");
|
||||
|
||||
EuclideanReconstructTwoFrames(keyframe_markers, &reconstruction);
|
||||
EuclideanBundle(normalized_tracks, &reconstruction);
|
||||
EuclideanCompleteReconstruction(normalized_tracks,
|
||||
&reconstruction,
|
||||
&update_callback);
|
||||
|
||||
/* Refinement/ */
|
||||
if (libmv_reconstruction_options->refine_intrinsics) {
|
||||
libmv_solveRefineIntrinsics(
|
||||
tracks,
|
||||
libmv_reconstruction_options->refine_intrinsics,
|
||||
libmv::BUNDLE_NO_CONSTRAINTS,
|
||||
progress_update_callback,
|
||||
callback_customdata,
|
||||
&reconstruction,
|
||||
camera_intrinsics);
|
||||
}
|
||||
|
||||
/* Set reconstruction scale to unity. */
|
||||
EuclideanScaleToUnity(&reconstruction);
|
||||
|
||||
/* Finish reconstruction. */
|
||||
finishReconstruction(tracks,
|
||||
*camera_intrinsics,
|
||||
libmv_reconstruction,
|
||||
progress_update_callback,
|
||||
callback_customdata);
|
||||
|
||||
libmv_reconstruction->is_valid = true;
|
||||
return (libmv_Reconstruction *) libmv_reconstruction;
|
||||
}
|
||||
|
||||
libmv_Reconstruction *libmv_solveModal(
|
||||
const libmv_Tracks *libmv_tracks,
|
||||
const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options,
|
||||
const libmv_ReconstructionOptions *libmv_reconstruction_options,
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void *callback_customdata) {
|
||||
libmv_Reconstruction *libmv_reconstruction =
|
||||
LIBMV_OBJECT_NEW(libmv_Reconstruction);
|
||||
|
||||
Tracks &tracks = *((Tracks *) libmv_tracks);
|
||||
EuclideanReconstruction &reconstruction =
|
||||
libmv_reconstruction->reconstruction;
|
||||
|
||||
ReconstructUpdateCallback update_callback =
|
||||
ReconstructUpdateCallback(progress_update_callback,
|
||||
callback_customdata);
|
||||
|
||||
/* Retrieve reconstruction options from C-API to libmv API. */
|
||||
CameraIntrinsics *camera_intrinsics;
|
||||
camera_intrinsics = libmv_reconstruction->intrinsics =
|
||||
libmv_cameraIntrinsicsCreateFromOptions(
|
||||
libmv_camera_intrinsics_options);
|
||||
|
||||
/* Invert the camera intrinsics. */
|
||||
Tracks normalized_tracks;
|
||||
libmv_getNormalizedTracks(tracks, *camera_intrinsics, &normalized_tracks);
|
||||
|
||||
/* Actual reconstruction. */
|
||||
ModalSolver(normalized_tracks, &reconstruction, &update_callback);
|
||||
|
||||
PolynomialCameraIntrinsics empty_intrinsics;
|
||||
EuclideanBundleCommonIntrinsics(normalized_tracks,
|
||||
libmv::BUNDLE_NO_INTRINSICS,
|
||||
libmv::BUNDLE_NO_TRANSLATION,
|
||||
&reconstruction,
|
||||
&empty_intrinsics);
|
||||
|
||||
/* Refinement. */
|
||||
if (libmv_reconstruction_options->refine_intrinsics) {
|
||||
libmv_solveRefineIntrinsics(
|
||||
tracks,
|
||||
libmv_reconstruction_options->refine_intrinsics,
|
||||
libmv::BUNDLE_NO_TRANSLATION,
|
||||
progress_update_callback, callback_customdata,
|
||||
&reconstruction,
|
||||
camera_intrinsics);
|
||||
}
|
||||
|
||||
/* Finish reconstruction. */
|
||||
finishReconstruction(tracks,
|
||||
*camera_intrinsics,
|
||||
libmv_reconstruction,
|
||||
progress_update_callback,
|
||||
callback_customdata);
|
||||
|
||||
libmv_reconstruction->is_valid = true;
|
||||
return (libmv_Reconstruction *) libmv_reconstruction;
|
||||
}
|
||||
|
||||
int libmv_reconstructionIsValid(libmv_Reconstruction *libmv_reconstruction) {
|
||||
return libmv_reconstruction->is_valid;
|
||||
}
|
||||
|
||||
void libmv_reconstructionDestroy(libmv_Reconstruction *libmv_reconstruction) {
|
||||
LIBMV_OBJECT_DELETE(libmv_reconstruction->intrinsics, CameraIntrinsics);
|
||||
LIBMV_OBJECT_DELETE(libmv_reconstruction, libmv_Reconstruction);
|
||||
}
|
||||
|
||||
int libmv_reprojectionPointForTrack(
|
||||
const libmv_Reconstruction *libmv_reconstruction,
|
||||
int track,
|
||||
double pos[3]) {
|
||||
const EuclideanReconstruction *reconstruction =
|
||||
&libmv_reconstruction->reconstruction;
|
||||
const EuclideanPoint *point =
|
||||
reconstruction->PointForTrack(track);
|
||||
if (point) {
|
||||
pos[0] = point->X[0];
|
||||
pos[1] = point->X[2];
|
||||
pos[2] = point->X[1];
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
double libmv_reprojectionErrorForTrack(
|
||||
const libmv_Reconstruction *libmv_reconstruction,
|
||||
int track) {
|
||||
const EuclideanReconstruction *reconstruction =
|
||||
&libmv_reconstruction->reconstruction;
|
||||
const CameraIntrinsics *intrinsics = libmv_reconstruction->intrinsics;
|
||||
libmv::vector<Marker> markers =
|
||||
libmv_reconstruction->tracks.MarkersForTrack(track);
|
||||
|
||||
int num_reprojected = 0;
|
||||
double total_error = 0.0;
|
||||
|
||||
for (int i = 0; i < markers.size(); ++i) {
|
||||
double weight = markers[i].weight;
|
||||
const EuclideanCamera *camera =
|
||||
reconstruction->CameraForImage(markers[i].image);
|
||||
const EuclideanPoint *point =
|
||||
reconstruction->PointForTrack(markers[i].track);
|
||||
|
||||
if (!camera || !point || weight == 0.0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
num_reprojected++;
|
||||
|
||||
Marker reprojected_marker =
|
||||
libmv_projectMarker(*point, *camera, *intrinsics);
|
||||
double ex = (reprojected_marker.x - markers[i].x) * weight;
|
||||
double ey = (reprojected_marker.y - markers[i].y) * weight;
|
||||
|
||||
total_error += sqrt(ex * ex + ey * ey);
|
||||
}
|
||||
|
||||
return total_error / num_reprojected;
|
||||
}
|
||||
|
||||
double libmv_reprojectionErrorForImage(
|
||||
const libmv_Reconstruction *libmv_reconstruction,
|
||||
int image) {
|
||||
const EuclideanReconstruction *reconstruction =
|
||||
&libmv_reconstruction->reconstruction;
|
||||
const CameraIntrinsics *intrinsics = libmv_reconstruction->intrinsics;
|
||||
libmv::vector<Marker> markers =
|
||||
libmv_reconstruction->tracks.MarkersInImage(image);
|
||||
const EuclideanCamera *camera = reconstruction->CameraForImage(image);
|
||||
int num_reprojected = 0;
|
||||
double total_error = 0.0;
|
||||
|
||||
if (!camera) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < markers.size(); ++i) {
|
||||
const EuclideanPoint *point =
|
||||
reconstruction->PointForTrack(markers[i].track);
|
||||
|
||||
if (!point) {
|
||||
continue;
|
||||
}
|
||||
|
||||
num_reprojected++;
|
||||
|
||||
Marker reprojected_marker =
|
||||
libmv_projectMarker(*point, *camera, *intrinsics);
|
||||
double ex = (reprojected_marker.x - markers[i].x) * markers[i].weight;
|
||||
double ey = (reprojected_marker.y - markers[i].y) * markers[i].weight;
|
||||
|
||||
total_error += sqrt(ex * ex + ey * ey);
|
||||
}
|
||||
|
||||
return total_error / num_reprojected;
|
||||
}
|
||||
|
||||
int libmv_reprojectionCameraForImage(
|
||||
const libmv_Reconstruction *libmv_reconstruction,
|
||||
int image,
|
||||
double mat[4][4]) {
|
||||
const EuclideanReconstruction *reconstruction =
|
||||
&libmv_reconstruction->reconstruction;
|
||||
const EuclideanCamera *camera =
|
||||
reconstruction->CameraForImage(image);
|
||||
|
||||
if (camera) {
|
||||
for (int j = 0; j < 3; ++j) {
|
||||
for (int k = 0; k < 3; ++k) {
|
||||
int l = k;
|
||||
|
||||
if (k == 1) {
|
||||
l = 2;
|
||||
} else if (k == 2) {
|
||||
l = 1;
|
||||
}
|
||||
|
||||
if (j == 2) {
|
||||
mat[j][l] = -camera->R(j, k);
|
||||
} else {
|
||||
mat[j][l] = camera->R(j, k);
|
||||
}
|
||||
}
|
||||
mat[j][3] = 0.0;
|
||||
}
|
||||
|
||||
libmv::Vec3 optical_center = -camera->R.transpose() * camera->t;
|
||||
|
||||
mat[3][0] = optical_center(0);
|
||||
mat[3][1] = optical_center(2);
|
||||
mat[3][2] = optical_center(1);
|
||||
|
||||
mat[3][3] = 1.0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
double libmv_reprojectionError(
|
||||
const libmv_Reconstruction *libmv_reconstruction) {
|
||||
return libmv_reconstruction->error;
|
||||
}
|
||||
|
||||
libmv_CameraIntrinsics *libmv_reconstructionExtractIntrinsics(
|
||||
libmv_Reconstruction *libmv_reconstruction) {
|
||||
return (libmv_CameraIntrinsics *) libmv_reconstruction->intrinsics;
|
||||
}
|
102
extern/libmv/intern/reconstruction.h
vendored
Normal file
102
extern/libmv/intern/reconstruction.h
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_RECONSTRUCTION_H_
|
||||
#define LIBMV_C_API_RECONSTRUCTION_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct libmv_Tracks;
|
||||
struct libmv_CameraIntrinsics;
|
||||
struct libmv_CameraIntrinsicsOptions;
|
||||
|
||||
typedef struct libmv_Reconstruction libmv_Reconstruction;
|
||||
|
||||
enum {
|
||||
LIBMV_REFINE_FOCAL_LENGTH = (1 << 0),
|
||||
LIBMV_REFINE_PRINCIPAL_POINT = (1 << 1),
|
||||
LIBMV_REFINE_RADIAL_DISTORTION_K1 = (1 << 2),
|
||||
LIBMV_REFINE_RADIAL_DISTORTION_K2 = (1 << 4),
|
||||
};
|
||||
|
||||
typedef struct libmv_ReconstructionOptions {
|
||||
int select_keyframes;
|
||||
int keyframe1, keyframe2;
|
||||
int refine_intrinsics;
|
||||
} libmv_ReconstructionOptions;
|
||||
|
||||
typedef void (*reconstruct_progress_update_cb) (void* customdata,
|
||||
double progress,
|
||||
const char* message);
|
||||
|
||||
libmv_Reconstruction* libmv_solveReconstruction(
|
||||
const struct libmv_Tracks* libmv_tracks,
|
||||
const struct libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
libmv_ReconstructionOptions* libmv_reconstruction_options,
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void* callback_customdata);
|
||||
|
||||
libmv_Reconstruction* libmv_solveModal(
|
||||
const struct libmv_Tracks* libmv_tracks,
|
||||
const struct libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
const libmv_ReconstructionOptions* libmv_reconstruction_options,
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void* callback_customdata);
|
||||
|
||||
int libmv_reconstructionIsValid(libmv_Reconstruction *libmv_reconstruction);
|
||||
|
||||
void libmv_reconstructionDestroy(libmv_Reconstruction* libmv_reconstruction);
|
||||
|
||||
int libmv_reprojectionPointForTrack(
|
||||
const libmv_Reconstruction* libmv_reconstruction,
|
||||
int track,
|
||||
double pos[3]);
|
||||
|
||||
double libmv_reprojectionErrorForTrack(
|
||||
const libmv_Reconstruction* libmv_reconstruction,
|
||||
int track);
|
||||
|
||||
double libmv_reprojectionErrorForImage(
|
||||
const libmv_Reconstruction* libmv_reconstruction,
|
||||
int image);
|
||||
|
||||
int libmv_reprojectionCameraForImage(
|
||||
const libmv_Reconstruction* libmv_reconstruction,
|
||||
int image,
|
||||
double mat[4][4]);
|
||||
|
||||
double libmv_reprojectionError(const libmv_Reconstruction* libmv_reconstruction);
|
||||
|
||||
struct libmv_CameraIntrinsics* libmv_reconstructionExtractIntrinsics(
|
||||
libmv_Reconstruction *libmv_Reconstruction);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_RECONSTRUCTION_H_
|
43
extern/libmv/intern/region.h
vendored
Normal file
43
extern/libmv/intern/region.h
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2014 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_REGION_H_
|
||||
#define LIBMV_C_API_REGION_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct libmv_Region {
|
||||
float min[2];
|
||||
float max[2];
|
||||
} libmv_Region;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_REGION_H_
|
403
extern/libmv/intern/stub.cc
vendored
Normal file
403
extern/libmv/intern/stub.cc
vendored
Normal file
@@ -0,0 +1,403 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2013 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "libmv-capi.h"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
/* ************ Logging ************ */
|
||||
|
||||
void libmv_initLogging(const char * /*argv0*/) {
|
||||
}
|
||||
|
||||
void libmv_startDebugLogging(void) {
|
||||
}
|
||||
|
||||
void libmv_setLoggingVerbosity(int /*verbosity*/) {
|
||||
}
|
||||
|
||||
/* ************ Planar tracker ************ */
|
||||
|
||||
/* TrackRegion (new planar tracker) */
|
||||
int libmv_trackRegion(const libmv_TrackRegionOptions * /*options*/,
|
||||
const float * /*image1*/,
|
||||
int /*image1_width*/,
|
||||
int /*image1_height*/,
|
||||
const float * /*image2*/,
|
||||
int /*image2_width*/,
|
||||
int /*image2_height*/,
|
||||
const double *x1,
|
||||
const double *y1,
|
||||
libmv_TrackRegionResult *result,
|
||||
double *x2,
|
||||
double *y2) {
|
||||
/* Convert to doubles for the libmv api. The four corners and the center. */
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
x2[i] = x1[i];
|
||||
y2[i] = y1[i];
|
||||
}
|
||||
|
||||
result->termination = -1;
|
||||
result->termination_reason = "Built without libmv support";
|
||||
result->correlation = 0.0;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void libmv_samplePlanarPatchFloat(const float * /*image*/,
|
||||
int /*width*/,
|
||||
int /*height*/,
|
||||
int /*channels*/,
|
||||
const double * /*xs*/,
|
||||
const double * /*ys*/,
|
||||
int /*num_samples_x*/,
|
||||
int /*num_samples_y*/,
|
||||
const float * /*mask*/,
|
||||
float * /*patch*/,
|
||||
double * /*warped_position_x*/,
|
||||
double * /*warped_position_y*/) {
|
||||
/* TODO(sergey): implement */
|
||||
}
|
||||
|
||||
void libmv_samplePlanarPatchByte(const unsigned char * /*image*/,
|
||||
int /*width*/,
|
||||
int /*height*/,
|
||||
int /*channels*/,
|
||||
const double * /*xs*/,
|
||||
const double * /*ys*/,
|
||||
int /*num_samples_x*/, int /*num_samples_y*/,
|
||||
const float * /*mask*/,
|
||||
unsigned char * /*patch*/,
|
||||
double * /*warped_position_x*/,
|
||||
double * /*warped_position_y*/) {
|
||||
/* TODO(sergey): implement */
|
||||
}
|
||||
|
||||
void libmv_floatImageDestroy(libmv_FloatImage* /*image*/)
|
||||
{
|
||||
}
|
||||
|
||||
/* ************ Tracks ************ */
|
||||
|
||||
libmv_Tracks *libmv_tracksNew(void) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void libmv_tracksInsert(libmv_Tracks * /*libmv_tracks*/,
|
||||
int /*image*/,
|
||||
int /*track*/,
|
||||
double /*x*/,
|
||||
double /*y*/,
|
||||
double /*weight*/) {
|
||||
}
|
||||
|
||||
void libmv_tracksDestroy(libmv_Tracks * /*libmv_tracks*/) {
|
||||
}
|
||||
|
||||
/* ************ Reconstruction solver ************ */
|
||||
|
||||
libmv_Reconstruction *libmv_solveReconstruction(
|
||||
const libmv_Tracks * /*libmv_tracks*/,
|
||||
const libmv_CameraIntrinsicsOptions * /*libmv_camera_intrinsics_options*/,
|
||||
libmv_ReconstructionOptions * /*libmv_reconstruction_options*/,
|
||||
reconstruct_progress_update_cb /*progress_update_callback*/,
|
||||
void * /*callback_customdata*/) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
libmv_Reconstruction *libmv_solveModal(
|
||||
const libmv_Tracks * /*libmv_tracks*/,
|
||||
const libmv_CameraIntrinsicsOptions * /*libmv_camera_intrinsics_options*/,
|
||||
const libmv_ReconstructionOptions * /*libmv_reconstruction_options*/,
|
||||
reconstruct_progress_update_cb /*progress_update_callback*/,
|
||||
void * /*callback_customdata*/) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int libmv_reconstructionIsValid(libmv_Reconstruction * /*libmv_reconstruction*/) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int libmv_reprojectionPointForTrack(
|
||||
const libmv_Reconstruction * /*libmv_reconstruction*/,
|
||||
int /*track*/,
|
||||
double /*pos*/[3]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
double libmv_reprojectionErrorForTrack(
|
||||
const libmv_Reconstruction * /*libmv_reconstruction*/,
|
||||
int /*track*/) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
double libmv_reprojectionErrorForImage(
|
||||
const libmv_Reconstruction * /*libmv_reconstruction*/,
|
||||
int /*image*/) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
int libmv_reprojectionCameraForImage(
|
||||
const libmv_Reconstruction * /*libmv_reconstruction*/,
|
||||
int /*image*/,
|
||||
double /*mat*/[4][4]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
double libmv_reprojectionError(
|
||||
const libmv_Reconstruction * /*libmv_reconstruction*/) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
void libmv_reconstructionDestroy(
|
||||
struct libmv_Reconstruction * /*libmv_reconstruction*/) {
|
||||
}
|
||||
|
||||
/* ************ Feature detector ************ */
|
||||
|
||||
libmv_Features *libmv_detectFeaturesByte(const unsigned char */*image_buffer*/,
|
||||
int /*width*/,
|
||||
int /*height*/,
|
||||
int /*channels*/,
|
||||
libmv_DetectOptions */*options*/) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct libmv_Features *libmv_detectFeaturesFloat(
|
||||
const float */*image_buffer*/,
|
||||
int /*width*/,
|
||||
int /*height*/,
|
||||
int /*channels*/,
|
||||
libmv_DetectOptions */*options*/) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int libmv_countFeatures(const libmv_Features * /*libmv_features*/) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void libmv_getFeature(const libmv_Features * /*libmv_features*/,
|
||||
int /*number*/,
|
||||
double *x,
|
||||
double *y,
|
||||
double *score,
|
||||
double *size) {
|
||||
*x = 0.0;
|
||||
*y = 0.0;
|
||||
*score = 0.0;
|
||||
*size = 0.0;
|
||||
}
|
||||
|
||||
void libmv_featuresDestroy(struct libmv_Features * /*libmv_features*/) {
|
||||
}
|
||||
|
||||
/* ************ Camera intrinsics ************ */
|
||||
|
||||
libmv_CameraIntrinsics *libmv_reconstructionExtractIntrinsics(
|
||||
libmv_Reconstruction * /*libmv_reconstruction*/) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
libmv_CameraIntrinsics *libmv_cameraIntrinsicsNew(
|
||||
const libmv_CameraIntrinsicsOptions * /*libmv_camera_intrinsics_options*/) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
libmv_CameraIntrinsics *libmv_cameraIntrinsicsCopy(
|
||||
const libmv_CameraIntrinsics * /*libmvIntrinsics*/) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDestroy(
|
||||
libmv_CameraIntrinsics * /*libmvIntrinsics*/) {
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUpdate(
|
||||
const libmv_CameraIntrinsicsOptions * /*libmv_camera_intrinsics_options*/,
|
||||
libmv_CameraIntrinsics * /*libmv_intrinsics*/) {
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsSetThreads(
|
||||
libmv_CameraIntrinsics * /*libmv_intrinsics*/,
|
||||
int /*threads*/) {
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsExtractOptions(
|
||||
const libmv_CameraIntrinsics */*libmv_intrinsics*/,
|
||||
libmv_CameraIntrinsicsOptions *camera_intrinsics_options) {
|
||||
memset(camera_intrinsics_options, 0, sizeof(libmv_CameraIntrinsicsOptions));
|
||||
camera_intrinsics_options->focal_length = 1.0;
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUndistortByte(
|
||||
const libmv_CameraIntrinsics * /*libmv_intrinsics*/,
|
||||
const unsigned char *source_image,
|
||||
int width, int height,
|
||||
float overscan, int channels,
|
||||
unsigned char *destination_image) {
|
||||
memcpy(destination_image, source_image,
|
||||
channels * width * height * sizeof(unsigned char));
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUndistortFloat(
|
||||
const libmv_CameraIntrinsics* /*libmv_intrinsics*/,
|
||||
const float* source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
float* destination_image) {
|
||||
memcpy(destination_image, source_image,
|
||||
channels * width * height * sizeof(float));
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDistortByte(
|
||||
const struct libmv_CameraIntrinsics* /*libmv_intrinsics*/,
|
||||
const unsigned char *source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
unsigned char *destination_image) {
|
||||
memcpy(destination_image, source_image,
|
||||
channels * width * height * sizeof(unsigned char));
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDistortFloat(
|
||||
const libmv_CameraIntrinsics* /*libmv_intrinsics*/,
|
||||
float* source_image,
|
||||
int width,
|
||||
int height,
|
||||
float overscan,
|
||||
int channels,
|
||||
float* destination_image) {
|
||||
memcpy(destination_image, source_image,
|
||||
channels * width * height * sizeof(float));
|
||||
}
|
||||
|
||||
/* ************ utils ************ */
|
||||
|
||||
void libmv_cameraIntrinsicsApply(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
double x,
|
||||
double y,
|
||||
double* x1,
|
||||
double* y1) {
|
||||
double focal_length = libmv_camera_intrinsics_options->focal_length;
|
||||
double principal_x = libmv_camera_intrinsics_options->principal_point_x;
|
||||
double principal_y = libmv_camera_intrinsics_options->principal_point_y;
|
||||
*x1 = x * focal_length + principal_x;
|
||||
*y1 = y * focal_length + principal_y;
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsInvert(
|
||||
const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
|
||||
double x,
|
||||
double y,
|
||||
double* x1,
|
||||
double* y1) {
|
||||
double focal_length = libmv_camera_intrinsics_options->focal_length;
|
||||
double principal_x = libmv_camera_intrinsics_options->principal_point_x;
|
||||
double principal_y = libmv_camera_intrinsics_options->principal_point_y;
|
||||
*x1 = (x - principal_x) / focal_length;
|
||||
*y1 = (y - principal_y) / focal_length;
|
||||
}
|
||||
|
||||
void libmv_homography2DFromCorrespondencesEuc(/* const */ double (*x1)[2],
|
||||
/* const */ double (*x2)[2],
|
||||
int num_points,
|
||||
double H[3][3]) {
|
||||
memset(H, 0, sizeof(double[3][3]));
|
||||
H[0][0] = 1.0f;
|
||||
H[1][1] = 1.0f;
|
||||
H[2][2] = 1.0f;
|
||||
}
|
||||
|
||||
/* ************ autotrack ************ */
|
||||
|
||||
libmv_AutoTrack* libmv_autoTrackNew(libmv_FrameAccessor* /*frame_accessor*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void libmv_autoTrackDestroy(libmv_AutoTrack* /*libmv_autotrack*/)
|
||||
{
|
||||
}
|
||||
|
||||
void libmv_autoTrackSetOptions(libmv_AutoTrack* /*libmv_autotrack*/,
|
||||
const libmv_AutoTrackOptions* /*options*/)
|
||||
{
|
||||
}
|
||||
|
||||
int libmv_autoTrackMarker(libmv_AutoTrack* /*libmv_autotrack*/,
|
||||
const libmv_TrackRegionOptions* /*libmv_options*/,
|
||||
libmv_Marker */*libmv_tracker_marker*/,
|
||||
libmv_TrackRegionResult* /*libmv_result*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void libmv_autoTrackAddMarker(libmv_AutoTrack* /*libmv_autotrack*/,
|
||||
const libmv_Marker* /*libmv_marker*/)
|
||||
{
|
||||
}
|
||||
|
||||
int libmv_autoTrackGetMarker(libmv_AutoTrack* /*libmv_autotrack*/,
|
||||
int /*clip*/,
|
||||
int /*frame*/,
|
||||
int /*track*/,
|
||||
libmv_Marker* /*libmv_marker*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ************ frame accessor ************ */
|
||||
|
||||
libmv_FrameAccessor* libmv_FrameAccessorNew(
|
||||
libmv_FrameAccessorUserData* /*user_data**/,
|
||||
libmv_GetImageCallback /*get_image_callback*/,
|
||||
libmv_ReleaseImageCallback /*release_image_callback*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void libmv_FrameAccessorDestroy(libmv_FrameAccessor* /*frame_accessor*/)
|
||||
{
|
||||
}
|
||||
|
||||
int64_t libmv_frameAccessorgetTransformKey(
|
||||
const libmv_FrameTransform */*transform*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void libmv_frameAccessorgetTransformRun(const libmv_FrameTransform* /*transform*/,
|
||||
const libmv_FloatImage* /*input_image*/,
|
||||
libmv_FloatImage* /*output_image*/)
|
||||
{
|
||||
}
|
||||
|
177
extern/libmv/intern/track_region.cc
vendored
Normal file
177
extern/libmv/intern/track_region.cc
vendored
Normal file
@@ -0,0 +1,177 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/track_region.h"
|
||||
#include "intern/image.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/image/image.h"
|
||||
#include "libmv/tracking/track_region.h"
|
||||
|
||||
/* define this to generate PNG images with content of search areas
|
||||
tracking between which failed */
|
||||
#undef DUMP_FAILURE
|
||||
|
||||
/* define this to generate PNG images with content of search areas
|
||||
on every itteration of tracking */
|
||||
#undef DUMP_ALWAYS
|
||||
|
||||
using libmv::FloatImage;
|
||||
using libmv::TrackRegionOptions;
|
||||
using libmv::TrackRegionResult;
|
||||
using libmv::TrackRegion;
|
||||
|
||||
void libmv_configureTrackRegionOptions(
|
||||
const libmv_TrackRegionOptions& options,
|
||||
TrackRegionOptions* track_region_options) {
|
||||
switch (options.motion_model) {
|
||||
#define LIBMV_CONVERT(the_model) \
|
||||
case TrackRegionOptions::the_model: \
|
||||
track_region_options->mode = TrackRegionOptions::the_model; \
|
||||
break;
|
||||
LIBMV_CONVERT(TRANSLATION)
|
||||
LIBMV_CONVERT(TRANSLATION_ROTATION)
|
||||
LIBMV_CONVERT(TRANSLATION_SCALE)
|
||||
LIBMV_CONVERT(TRANSLATION_ROTATION_SCALE)
|
||||
LIBMV_CONVERT(AFFINE)
|
||||
LIBMV_CONVERT(HOMOGRAPHY)
|
||||
#undef LIBMV_CONVERT
|
||||
}
|
||||
|
||||
track_region_options->minimum_correlation = options.minimum_correlation;
|
||||
track_region_options->max_iterations = options.num_iterations;
|
||||
track_region_options->sigma = options.sigma;
|
||||
track_region_options->num_extra_points = 1;
|
||||
track_region_options->image1_mask = NULL;
|
||||
track_region_options->use_brute_initialization = options.use_brute;
|
||||
/* TODO(keir): This will make some cases better, but may be a regression until
|
||||
* the motion model is in. Since this is on trunk, enable it for now.
|
||||
*
|
||||
* TODO(sergey): This gives much worse results on mango footage (see 04_2e)
|
||||
* so disabling for now for until proper prediction model is landed.
|
||||
*
|
||||
* The thing is, currently blender sends input coordinates as the guess to
|
||||
* region tracker and in case of fast motion such an early out ruins the track.
|
||||
*/
|
||||
track_region_options->attempt_refine_before_brute = false;
|
||||
track_region_options->use_normalized_intensities = options.use_normalization;
|
||||
}
|
||||
|
||||
void libmv_regionTrackergetResult(const TrackRegionResult& track_region_result,
|
||||
libmv_TrackRegionResult* result) {
|
||||
result->termination = (int) track_region_result.termination;
|
||||
result->termination_reason = "";
|
||||
result->correlation = track_region_result.correlation;
|
||||
}
|
||||
|
||||
int libmv_trackRegion(const libmv_TrackRegionOptions* options,
|
||||
const float* image1,
|
||||
int image1_width,
|
||||
int image1_height,
|
||||
const float* image2,
|
||||
int image2_width,
|
||||
int image2_height,
|
||||
const double* x1,
|
||||
const double* y1,
|
||||
libmv_TrackRegionResult* result,
|
||||
double* x2,
|
||||
double* y2) {
|
||||
double xx1[5], yy1[5];
|
||||
double xx2[5], yy2[5];
|
||||
bool tracking_result = false;
|
||||
|
||||
// Convert to doubles for the libmv api. The four corners and the center.
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
xx1[i] = x1[i];
|
||||
yy1[i] = y1[i];
|
||||
xx2[i] = x2[i];
|
||||
yy2[i] = y2[i];
|
||||
}
|
||||
|
||||
TrackRegionOptions track_region_options;
|
||||
FloatImage image1_mask;
|
||||
|
||||
libmv_configureTrackRegionOptions(*options, &track_region_options);
|
||||
if (options->image1_mask) {
|
||||
libmv_floatBufferToFloatImage(options->image1_mask,
|
||||
image1_width,
|
||||
image1_height,
|
||||
1,
|
||||
&image1_mask);
|
||||
|
||||
track_region_options.image1_mask = &image1_mask;
|
||||
}
|
||||
|
||||
// Convert from raw float buffers to libmv's FloatImage.
|
||||
FloatImage old_patch, new_patch;
|
||||
libmv_floatBufferToFloatImage(image1,
|
||||
image1_width,
|
||||
image1_height,
|
||||
1,
|
||||
&old_patch);
|
||||
libmv_floatBufferToFloatImage(image2,
|
||||
image2_width,
|
||||
image2_height,
|
||||
1,
|
||||
&new_patch);
|
||||
|
||||
TrackRegionResult track_region_result;
|
||||
TrackRegion(old_patch, new_patch,
|
||||
xx1, yy1,
|
||||
track_region_options,
|
||||
xx2, yy2,
|
||||
&track_region_result);
|
||||
|
||||
// Convert to floats for the blender api.
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
x2[i] = xx2[i];
|
||||
y2[i] = yy2[i];
|
||||
}
|
||||
|
||||
// TODO(keir): Update the termination string with failure details.
|
||||
if (track_region_result.termination == TrackRegionResult::CONVERGENCE ||
|
||||
track_region_result.termination == TrackRegionResult::NO_CONVERGENCE) {
|
||||
tracking_result = true;
|
||||
}
|
||||
|
||||
// Debug dump of patches.
|
||||
#if defined(DUMP_FAILURE) || defined(DUMP_ALWAYS)
|
||||
bool need_dump = !tracking_result;
|
||||
|
||||
# ifdef DUMP_ALWAYS
|
||||
need_dump = true;
|
||||
# endif
|
||||
|
||||
if (need_dump) {
|
||||
libmv_saveImage(old_patch, "old_patch", x1[4], y1[4]);
|
||||
libmv_saveImage(new_patch, "new_patch", x2[4], y2[4]);
|
||||
if (options->image1_mask) {
|
||||
libmv_saveImage(image1_mask, "mask", x2[4], y2[4]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return tracking_result;
|
||||
}
|
81
extern/libmv/intern/track_region.h
vendored
Normal file
81
extern/libmv/intern/track_region.h
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_TRACK_REGION_H_
|
||||
#define LIBMV_C_API_TRACK_REGION_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct libmv_TrackRegionOptions {
|
||||
int motion_model;
|
||||
int num_iterations;
|
||||
int use_brute;
|
||||
int use_normalization;
|
||||
double minimum_correlation;
|
||||
double sigma;
|
||||
float *image1_mask;
|
||||
} libmv_TrackRegionOptions;
|
||||
|
||||
typedef struct libmv_TrackRegionResult {
|
||||
int termination;
|
||||
const char* termination_reason;
|
||||
double correlation;
|
||||
} libmv_TrackRegionResult;
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace libmv {
|
||||
struct TrackRegionOptions;
|
||||
struct TrackRegionResult;
|
||||
}
|
||||
void libmv_configureTrackRegionOptions(
|
||||
const libmv_TrackRegionOptions& options,
|
||||
libmv::TrackRegionOptions* track_region_options);
|
||||
|
||||
void libmv_regionTrackergetResult(
|
||||
const libmv::TrackRegionResult& track_region_result,
|
||||
libmv_TrackRegionResult* result);
|
||||
#endif
|
||||
|
||||
int libmv_trackRegion(const libmv_TrackRegionOptions* options,
|
||||
const float* image1,
|
||||
int image1_width,
|
||||
int image1_height,
|
||||
const float* image2,
|
||||
int image2_width,
|
||||
int image2_height,
|
||||
const double* x1,
|
||||
const double* y1,
|
||||
libmv_TrackRegionResult* result,
|
||||
double* x2,
|
||||
double* y2);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_PLANAR_TRACKER_H_
|
52
extern/libmv/intern/tracks.cc
vendored
Normal file
52
extern/libmv/intern/tracks.cc
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/tracks.h"
|
||||
#include "intern/utildefines.h"
|
||||
|
||||
#include "libmv/simple_pipeline/tracks.h"
|
||||
|
||||
using libmv::Marker;
|
||||
using libmv::Tracks;
|
||||
|
||||
libmv_Tracks* libmv_tracksNew(void) {
|
||||
Tracks* tracks = LIBMV_OBJECT_NEW(Tracks);
|
||||
|
||||
return (libmv_Tracks*) tracks;
|
||||
}
|
||||
|
||||
void libmv_tracksDestroy(libmv_Tracks* libmv_tracks) {
|
||||
LIBMV_OBJECT_DELETE(libmv_tracks, Tracks);
|
||||
}
|
||||
|
||||
void libmv_tracksInsert(libmv_Tracks *libmv_tracks,
|
||||
int image,
|
||||
int track,
|
||||
double x,
|
||||
double y,
|
||||
double weight) {
|
||||
((Tracks *) libmv_tracks)->Insert(image, track, x, y, weight);
|
||||
}
|
@@ -15,39 +15,37 @@
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file source/blender/freestyle/intern/python/StrokeShader/BPy_fstreamShader.h
|
||||
* \ingroup freestyle
|
||||
*/
|
||||
|
||||
#ifndef __FREESTYLE_PYTHON_FSTREAMSHADER_H__
|
||||
#define __FREESTYLE_PYTHON_FSTREAMSHADER_H__
|
||||
|
||||
#include "../BPy_StrokeShader.h"
|
||||
#ifndef LIBMV_C_API_TRACKS_H_
|
||||
#define LIBMV_C_API_TRACKS_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct libmv_Tracks libmv_Tracks;
|
||||
|
||||
extern PyTypeObject fstreamShader_Type;
|
||||
libmv_Tracks* libmv_tracksNew(void);
|
||||
|
||||
#define BPy_fstreamShader_Check(v) (PyObject_IsInstance((PyObject *)v, (PyObject *)&fstreamShader_Type))
|
||||
void libmv_tracksDestroy(libmv_Tracks* libmv_tracks);
|
||||
|
||||
/*---------------------------Python BPy_fstreamShader structure definition----------*/
|
||||
typedef struct {
|
||||
BPy_StrokeShader py_ss;
|
||||
} BPy_fstreamShader;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
void libmv_tracksInsert(libmv_Tracks* libmv_tracks,
|
||||
int image,
|
||||
int track,
|
||||
double x,
|
||||
double y,
|
||||
double weight);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __FREESTYLE_PYTHON_FSTREAMSHADER_H__ */
|
||||
#endif // LIBMV_C_API_TRACKS_H_
|
138
extern/libmv/intern/tracksN.cc
vendored
Normal file
138
extern/libmv/intern/tracksN.cc
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "intern/tracksN.h"
|
||||
#include "intern/utildefines.h"
|
||||
#include "libmv/autotrack/marker.h"
|
||||
#include "libmv/autotrack/tracks.h"
|
||||
|
||||
using mv::Marker;
|
||||
using mv::Tracks;
|
||||
|
||||
void libmv_apiMarkerToMarker(const libmv_Marker& libmv_marker,
|
||||
Marker *marker) {
|
||||
marker->clip = libmv_marker.clip;
|
||||
marker->frame = libmv_marker.frame;
|
||||
marker->track = libmv_marker.track;
|
||||
marker->center(0) = libmv_marker.center[0];
|
||||
marker->center(1) = libmv_marker.center[1];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
marker->patch.coordinates(i, 0) = libmv_marker.patch[i][0];
|
||||
marker->patch.coordinates(i, 1) = libmv_marker.patch[i][1];
|
||||
}
|
||||
marker->search_region.min(0) = libmv_marker.search_region_min[0];
|
||||
marker->search_region.min(1) = libmv_marker.search_region_min[1];
|
||||
marker->search_region.max(0) = libmv_marker.search_region_max[0];
|
||||
marker->search_region.max(1) = libmv_marker.search_region_max[1];
|
||||
marker->weight = libmv_marker.weight;
|
||||
marker->source = (Marker::Source) libmv_marker.source;
|
||||
marker->status = (Marker::Status) libmv_marker.status;
|
||||
marker->reference_clip = libmv_marker.reference_clip;
|
||||
marker->reference_frame = libmv_marker.reference_frame;
|
||||
marker->model_type = (Marker::ModelType) libmv_marker.model_type;
|
||||
marker->model_id = libmv_marker.model_id;
|
||||
marker->disabled_channels = libmv_marker.disabled_channels;
|
||||
}
|
||||
|
||||
void libmv_markerToApiMarker(const Marker& marker,
|
||||
libmv_Marker *libmv_marker) {
|
||||
libmv_marker->clip = marker.clip;
|
||||
libmv_marker->frame = marker.frame;
|
||||
libmv_marker->track = marker.track;
|
||||
libmv_marker->center[0] = marker.center(0);
|
||||
libmv_marker->center[1] = marker.center(1);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
libmv_marker->patch[i][0] = marker.patch.coordinates(i, 0);
|
||||
libmv_marker->patch[i][1] = marker.patch.coordinates(i, 1);
|
||||
}
|
||||
libmv_marker->search_region_min[0] = marker.search_region.min(0);
|
||||
libmv_marker->search_region_min[1] = marker.search_region.min(1);
|
||||
libmv_marker->search_region_max[0] = marker.search_region.max(0);
|
||||
libmv_marker->search_region_max[1] = marker.search_region.max(1);
|
||||
libmv_marker->weight = marker.weight;
|
||||
libmv_marker->source = (libmv_MarkerSource) marker.source;
|
||||
libmv_marker->status = (libmv_MarkerStatus) marker.status;
|
||||
libmv_marker->reference_clip = marker.reference_clip;
|
||||
libmv_marker->reference_frame = marker.reference_frame;
|
||||
libmv_marker->model_type = (libmv_MarkerModelType) marker.model_type;
|
||||
libmv_marker->model_id = marker.model_id;
|
||||
libmv_marker->disabled_channels = marker.disabled_channels;
|
||||
}
|
||||
|
||||
libmv_TracksN* libmv_tracksNewN(void) {
|
||||
Tracks* tracks = LIBMV_OBJECT_NEW(Tracks);
|
||||
|
||||
return (libmv_TracksN*) tracks;
|
||||
}
|
||||
|
||||
void libmv_tracksDestroyN(libmv_TracksN* libmv_tracks) {
|
||||
LIBMV_OBJECT_DELETE(libmv_tracks, Tracks);
|
||||
}
|
||||
|
||||
void libmv_tracksAddMarkerN(libmv_TracksN* libmv_tracks,
|
||||
const libmv_Marker* libmv_marker) {
|
||||
Marker marker;
|
||||
libmv_apiMarkerToMarker(*libmv_marker, &marker);
|
||||
((Tracks*) libmv_tracks)->AddMarker(marker);
|
||||
}
|
||||
|
||||
void libmv_tracksGetMarkerN(libmv_TracksN* libmv_tracks,
|
||||
int clip,
|
||||
int frame,
|
||||
int track,
|
||||
libmv_Marker* libmv_marker) {
|
||||
Marker marker;
|
||||
((Tracks*) libmv_tracks)->GetMarker(clip, frame, track, &marker);
|
||||
libmv_markerToApiMarker(marker, libmv_marker);
|
||||
}
|
||||
|
||||
void libmv_tracksRemoveMarkerN(libmv_TracksN* libmv_tracks,
|
||||
int clip,
|
||||
int frame,
|
||||
int track) {
|
||||
((Tracks *) libmv_tracks)->RemoveMarker(clip, frame, track);
|
||||
}
|
||||
|
||||
void libmv_tracksRemoveMarkersForTrack(libmv_TracksN* libmv_tracks,
|
||||
int track) {
|
||||
((Tracks *) libmv_tracks)->RemoveMarkersForTrack(track);
|
||||
}
|
||||
|
||||
int libmv_tracksMaxClipN(libmv_TracksN* libmv_tracks) {
|
||||
return ((Tracks*) libmv_tracks)->MaxClip();
|
||||
}
|
||||
|
||||
int libmv_tracksMaxFrameN(libmv_TracksN* libmv_tracks, int clip) {
|
||||
return ((Tracks*) libmv_tracks)->MaxFrame(clip);
|
||||
}
|
||||
|
||||
int libmv_tracksMaxTrackN(libmv_TracksN* libmv_tracks) {
|
||||
return ((Tracks*) libmv_tracks)->MaxTrack();
|
||||
}
|
||||
|
||||
int libmv_tracksNumMarkersN(libmv_TracksN* libmv_tracks) {
|
||||
return ((Tracks*) libmv_tracks)->NumMarkers();
|
||||
}
|
129
extern/libmv/intern/tracksN.h
vendored
Normal file
129
extern/libmv/intern/tracksN.h
vendored
Normal file
@@ -0,0 +1,129 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// TODO(serrgey): For the time being we're converting simple pipeline
|
||||
// to an autotrack pipeline we call it tracks.
|
||||
// Once we've done with porting we remove N.
|
||||
|
||||
#ifndef LIBMV_C_API_TRACKSN_H_
|
||||
#define LIBMV_C_API_TRACKSN_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct libmv_TracksN libmv_TracksN;
|
||||
|
||||
// Keep order in this enums exactly the same as in mv::Marker.
|
||||
// Otherwise API wouldn't convert the values properly.
|
||||
typedef enum libmv_MarkerSource {
|
||||
LIBMV_MARKER_SOURCE_MANUAL,
|
||||
LIBMV_MARKER_SOURCE_DETECTED,
|
||||
LIBMV_MARKER_SOURCE_TRACKED,
|
||||
LIBMV_MARKER_SOURCE_MATCHED,
|
||||
LIBMV_MARKER_SOURCE_PREDICTED,
|
||||
} libmv_MarkerSource;
|
||||
|
||||
typedef enum libmv_MarkerStatus {
|
||||
LIBMV_MARKER_STATUS_UNKNOWN,
|
||||
LIBMV_MARKER_STATUS_INLIER,
|
||||
LIBMV_MARKER_STATUS_OUTLIER,
|
||||
} libmv_MarkerStatus;
|
||||
|
||||
typedef enum libmv_MarkerModelType {
|
||||
LIBMV_MARKER_MODEL_TYPE_POINT,
|
||||
LIBMV_MARKER_MODEL_TYPE_PLANE,
|
||||
LIBMV_MARKER_MODEL_TYPE_LINE,
|
||||
LIBMV_MARKER_MODEL_TYPE_CUBE,
|
||||
} libmv_MarkerModelType;
|
||||
|
||||
enum libmv_MarkerChannel {
|
||||
LIBMV_MARKER_CHANNEL_R = (1 << 0),
|
||||
LIBMV_MARKER_CHANNEL_G = (1 << 1),
|
||||
LIBMV_MARKER_CHANNEL_B = (1 << 2),
|
||||
};
|
||||
|
||||
typedef struct libmv_Marker {
|
||||
int clip;
|
||||
int frame;
|
||||
int track;
|
||||
float center[2];
|
||||
float patch[4][2];
|
||||
float search_region_min[2];
|
||||
float search_region_max[2];
|
||||
float weight;
|
||||
libmv_MarkerSource source;
|
||||
libmv_MarkerStatus status;
|
||||
int reference_clip;
|
||||
int reference_frame;
|
||||
libmv_MarkerModelType model_type;
|
||||
int model_id;
|
||||
int disabled_channels;
|
||||
} libmv_Marker;
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace mv {
|
||||
struct Marker;
|
||||
}
|
||||
void libmv_apiMarkerToMarker(const libmv_Marker& libmv_marker,
|
||||
mv::Marker *marker);
|
||||
|
||||
void libmv_markerToApiMarker(const mv::Marker& marker,
|
||||
libmv_Marker *libmv_marker);
|
||||
#endif
|
||||
|
||||
libmv_TracksN* libmv_tracksNewN(void);
|
||||
|
||||
void libmv_tracksDestroyN(libmv_TracksN* libmv_tracks);
|
||||
|
||||
|
||||
void libmv_tracksAddMarkerN(libmv_TracksN* libmv_tracks,
|
||||
const libmv_Marker* libmv_marker);
|
||||
|
||||
void libmv_tracksGetMarkerN(libmv_TracksN* libmv_tracks,
|
||||
int clip,
|
||||
int frame,
|
||||
int track,
|
||||
libmv_Marker* libmv_marker);
|
||||
|
||||
void libmv_tracksRemoveMarkerN(libmv_TracksN* libmv_tracks,
|
||||
int clip,
|
||||
int frame,
|
||||
int track);
|
||||
|
||||
void libmv_tracksRemoveMarkersForTrack(libmv_TracksN* libmv_tracks,
|
||||
int track);
|
||||
|
||||
int libmv_tracksMaxClipN(libmv_TracksN* libmv_tracks);
|
||||
int libmv_tracksMaxFrameN(libmv_TracksN* libmv_tracks, int clip);
|
||||
int libmv_tracksMaxTrackN(libmv_TracksN* libmv_tracks);
|
||||
int libmv_tracksNumMarkersN(libmv_TracksN* libmv_tracks);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_TRACKS_H_
|
@@ -23,8 +23,8 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef LIBMV_C_API_INTERN_H
|
||||
#define LIBMV_C_API_INTERN_H
|
||||
#ifndef LIBMV_C_API_UTILDEFINES_H_
|
||||
#define LIBMV_C_API_UTILDEFINES_H_
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# define __func__ __FUNCTION__
|
||||
@@ -36,24 +36,27 @@
|
||||
# define LIBMV_OBJECT_NEW OBJECT_GUARDED_NEW
|
||||
# define LIBMV_OBJECT_DELETE OBJECT_GUARDED_DELETE
|
||||
# define LIBMV_OBJECT_DELETE OBJECT_GUARDED_DELETE
|
||||
# define LIBMV_STRUCT_NEW(type, count) (type*)MEM_mallocN(sizeof(type) * count, __func__)
|
||||
# define LIBMV_STRUCT_NEW(type, count) \
|
||||
(type*)MEM_mallocN(sizeof(type) * count, __func__)
|
||||
# define LIBMV_STRUCT_DELETE(what) MEM_freeN(what)
|
||||
#else
|
||||
// Need this to keep libmv-capi potentially standalone.
|
||||
# if defined __GNUC__ || defined __sun
|
||||
# define LIBMV_OBJECT_NEW(type, args ...) \
|
||||
new(malloc(sizeof(type))) type(args)
|
||||
new(malloc(sizeof(type))) type(args)
|
||||
# else
|
||||
# define LIBMV_OBJECT_NEW(type, ...) \
|
||||
new(malloc(sizeof(type))) type(__VA_ARGS__)
|
||||
new(malloc(sizeof(type))) type(__VA_ARGS__)
|
||||
#endif
|
||||
# define LIBMV_OBJECT_DELETE(what, type) \
|
||||
{ if(what) { \
|
||||
((type*)(what))->~type(); \
|
||||
free(what); \
|
||||
} } (void)0
|
||||
{ \
|
||||
if (what) { \
|
||||
((type*)(what))->~type(); \
|
||||
free(what); \
|
||||
} \
|
||||
} (void)0
|
||||
# define LIBMV_STRUCT_NEW(type, count) (type*)malloc(sizeof(type) * count)
|
||||
# define LIBMV_STRUCT_DELETE(what) { if (what) free(what); } (void)0
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_INTERN_H
|
||||
#endif // LIBMV_C_API_UTILDEFINES_H_
|
1185
extern/libmv/libmv-capi.cc
vendored
1185
extern/libmv/libmv-capi.cc
vendored
File diff suppressed because it is too large
Load Diff
188
extern/libmv/libmv-capi.h
vendored
188
extern/libmv/libmv-capi.h
vendored
@@ -27,180 +27,16 @@
|
||||
#ifndef LIBMV_C_API_H
|
||||
#define LIBMV_C_API_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#include "intern/autotrack.h"
|
||||
#include "intern/camera_intrinsics.h"
|
||||
#include "intern/detector.h"
|
||||
#include "intern/frame_accessor.h"
|
||||
#include "intern/homography.h"
|
||||
#include "intern/image.h"
|
||||
#include "intern/logging.h"
|
||||
#include "intern/reconstruction.h"
|
||||
#include "intern/track_region.h"
|
||||
#include "intern/tracks.h"
|
||||
#include "intern/tracksN.h"
|
||||
|
||||
struct libmv_Tracks;
|
||||
struct libmv_Reconstruction;
|
||||
struct libmv_Features;
|
||||
struct libmv_CameraIntrinsics;
|
||||
|
||||
/* Logging */
|
||||
void libmv_initLogging(const char *argv0);
|
||||
void libmv_startDebugLogging(void);
|
||||
void libmv_setLoggingVerbosity(int verbosity);
|
||||
|
||||
/* Planar tracker */
|
||||
typedef struct libmv_TrackRegionOptions {
|
||||
int motion_model;
|
||||
int num_iterations;
|
||||
int use_brute;
|
||||
int use_normalization;
|
||||
double minimum_correlation;
|
||||
double sigma;
|
||||
float *image1_mask;
|
||||
} libmv_TrackRegionOptions;
|
||||
|
||||
typedef struct libmv_TrackRegionResult {
|
||||
int termination;
|
||||
const char *termination_reason;
|
||||
double correlation;
|
||||
} libmv_TrackRegionResult;
|
||||
|
||||
int libmv_trackRegion(const libmv_TrackRegionOptions *options,
|
||||
const float *image1, int image1_width, int image1_height,
|
||||
const float *image2, int image2_width, int image2_height,
|
||||
const double *x1, const double *y1,
|
||||
libmv_TrackRegionResult *result,
|
||||
double *x2, double *y2);
|
||||
void libmv_samplePlanarPatch(const float *image,
|
||||
int width, int height,
|
||||
int channels,
|
||||
const double *xs, const double *ys,
|
||||
int num_samples_x, int num_samples_y,
|
||||
const float *mask,
|
||||
float *patch,
|
||||
double *warped_position_x, double *warped_position_y);
|
||||
void libmv_samplePlanarPatchByte(const unsigned char *image,
|
||||
int width, int height,
|
||||
int channels,
|
||||
const double *xs, const double *ys,
|
||||
int num_samples_x, int num_samples_y,
|
||||
const float *mask,
|
||||
unsigned char *patch,
|
||||
double *warped_position_x, double *warped_position_y);
|
||||
|
||||
/* Tracks */
|
||||
struct libmv_Tracks *libmv_tracksNew(void);
|
||||
void libmv_tracksDestroy(struct libmv_Tracks *libmv_tracks);
|
||||
void libmv_tracksInsert(struct libmv_Tracks *libmv_tracks, int image, int track, double x, double y, double weight);
|
||||
|
||||
/* Reconstruction */
|
||||
#define LIBMV_REFINE_FOCAL_LENGTH (1 << 0)
|
||||
#define LIBMV_REFINE_PRINCIPAL_POINT (1 << 1)
|
||||
#define LIBMV_REFINE_RADIAL_DISTORTION_K1 (1 << 2)
|
||||
#define LIBMV_REFINE_RADIAL_DISTORTION_K2 (1 << 4)
|
||||
|
||||
enum {
|
||||
LIBMV_DISTORTION_MODEL_POLYNOMIAL = 0,
|
||||
LIBMV_DISTORTION_MODEL_DIVISION = 1,
|
||||
};
|
||||
|
||||
typedef struct libmv_CameraIntrinsicsOptions {
|
||||
/* Common settings of all distortion models. */
|
||||
int distortion_model;
|
||||
int image_width, image_height;
|
||||
double focal_length;
|
||||
double principal_point_x, principal_point_y;
|
||||
|
||||
/* Radial distortion model. */
|
||||
double polynomial_k1, polynomial_k2, polynomial_k3;
|
||||
double polynomial_p1, polynomial_p2;
|
||||
|
||||
/* Division distortion model. */
|
||||
double division_k1, division_k2;
|
||||
} libmv_CameraIntrinsicsOptions;
|
||||
|
||||
typedef struct libmv_ReconstructionOptions {
|
||||
int select_keyframes;
|
||||
int keyframe1, keyframe2;
|
||||
|
||||
int refine_intrinsics;
|
||||
} libmv_ReconstructionOptions;
|
||||
|
||||
typedef void (*reconstruct_progress_update_cb) (void *customdata, double progress, const char *message);
|
||||
|
||||
struct libmv_Reconstruction *libmv_solveReconstruction(const struct libmv_Tracks *libmv_tracks,
|
||||
const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options,
|
||||
libmv_ReconstructionOptions *libmv_reconstruction_options,
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void *callback_customdata);
|
||||
struct libmv_Reconstruction *libmv_solveModal(const struct libmv_Tracks *libmv_tracks,
|
||||
const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options,
|
||||
const libmv_ReconstructionOptions *libmv_reconstruction_options,
|
||||
reconstruct_progress_update_cb progress_update_callback,
|
||||
void *callback_customdata);
|
||||
void libmv_reconstructionDestroy(struct libmv_Reconstruction *libmv_reconstruction);
|
||||
int libmv_reprojectionPointForTrack(const struct libmv_Reconstruction *libmv_reconstruction, int track, double pos[3]);
|
||||
double libmv_reprojectionErrorForTrack(const struct libmv_Reconstruction *libmv_reconstruction, int track);
|
||||
double libmv_reprojectionErrorForImage(const struct libmv_Reconstruction *libmv_reconstruction, int image);
|
||||
int libmv_reprojectionCameraForImage(const struct libmv_Reconstruction *libmv_reconstruction,
|
||||
int image, double mat[4][4]);
|
||||
double libmv_reprojectionError(const struct libmv_Reconstruction *libmv_reconstruction);
|
||||
struct libmv_CameraIntrinsics *libmv_reconstructionExtractIntrinsics(struct libmv_Reconstruction *libmv_Reconstruction);
|
||||
|
||||
/* Feature detector */
|
||||
enum {
|
||||
LIBMV_DETECTOR_FAST,
|
||||
LIBMV_DETECTOR_MORAVEC,
|
||||
LIBMV_DETECTOR_HARRIS,
|
||||
};
|
||||
|
||||
typedef struct libmv_DetectOptions {
|
||||
int detector;
|
||||
int margin;
|
||||
int min_distance;
|
||||
int fast_min_trackness;
|
||||
int moravec_max_count;
|
||||
unsigned char *moravec_pattern;
|
||||
double harris_threshold;
|
||||
} libmv_DetectOptions;
|
||||
|
||||
struct libmv_Features *libmv_detectFeaturesByte(const unsigned char *image_buffer,
|
||||
int width, int height, int channels,
|
||||
libmv_DetectOptions *options);
|
||||
struct libmv_Features *libmv_detectFeaturesFloat(const float *image_buffer,
|
||||
int width, int height, int channels,
|
||||
libmv_DetectOptions *options);
|
||||
|
||||
void libmv_featuresDestroy(struct libmv_Features *libmv_features);
|
||||
int libmv_countFeatures(const struct libmv_Features *libmv_features);
|
||||
void libmv_getFeature(const struct libmv_Features *libmv_features, int number, double *x, double *y, double *score,
|
||||
double *size);
|
||||
|
||||
/* Camera intrinsics */
|
||||
struct libmv_CameraIntrinsics *libmv_cameraIntrinsicsNew(
|
||||
const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options);
|
||||
struct libmv_CameraIntrinsics *libmv_cameraIntrinsicsCopy(const struct libmv_CameraIntrinsics *libmv_intrinsics);
|
||||
void libmv_cameraIntrinsicsDestroy(struct libmv_CameraIntrinsics *libmv_intrinsics);
|
||||
void libmv_cameraIntrinsicsUpdate(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options,
|
||||
struct libmv_CameraIntrinsics *libmv_intrinsics);
|
||||
void libmv_cameraIntrinsicsSetThreads(struct libmv_CameraIntrinsics *libmv_intrinsics, int threads);
|
||||
void libmv_cameraIntrinsicsExtractOptions(
|
||||
const struct libmv_CameraIntrinsics *libmv_intrinsics,
|
||||
struct libmv_CameraIntrinsicsOptions *camera_intrinsics_options);
|
||||
void libmv_cameraIntrinsicsUndistortByte(const struct libmv_CameraIntrinsics *libmv_intrinsics,
|
||||
unsigned char *src, unsigned char *dst, int width, int height,
|
||||
float overscan, int channels);
|
||||
void libmv_cameraIntrinsicsUndistortFloat(const struct libmv_CameraIntrinsics *libmv_intrinsics,
|
||||
float *src, float *dst, int width, int height,
|
||||
float overscan, int channels);
|
||||
void libmv_cameraIntrinsicsDistortByte(const struct libmv_CameraIntrinsics *libmv_intrinsics,
|
||||
unsigned char *src, unsigned char *dst, int width, int height,
|
||||
float overscan, int channels);
|
||||
void libmv_cameraIntrinsicsDistortFloat(const struct libmv_CameraIntrinsics *libmv_intrinsics,
|
||||
float *src, float *dst, int width, int height,
|
||||
float overscan, int channels);
|
||||
void libmv_cameraIntrinsicsApply(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options,
|
||||
double x, double y, double *x1, double *y1);
|
||||
void libmv_cameraIntrinsicsInvert(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options,
|
||||
double x, double y, double *x1, double *y1);
|
||||
|
||||
void libmv_homography2DFromCorrespondencesEuc(double (*x1)[2], double (*x2)[2], int num_points, double H[3][3]);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // LIBMV_C_API_H
|
||||
#endif // LIBMV_C_API_H
|
||||
|
293
extern/libmv/libmv-capi_stub.cc
vendored
293
extern/libmv/libmv-capi_stub.cc
vendored
@@ -1,293 +0,0 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2013 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef WITH_LIBMV
|
||||
|
||||
#include "libmv-capi.h"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
/* ************ Logging ************ */
|
||||
|
||||
void libmv_initLogging(const char * /*argv0*/)
|
||||
{
|
||||
}
|
||||
|
||||
void libmv_startDebugLogging(void)
|
||||
{
|
||||
}
|
||||
|
||||
void libmv_setLoggingVerbosity(int /*verbosity*/)
|
||||
{
|
||||
}
|
||||
|
||||
/* ************ Planar tracker ************ */
|
||||
|
||||
/* TrackRegion (new planar tracker) */
|
||||
int libmv_trackRegion(const libmv_TrackRegionOptions * /*options*/,
|
||||
const float * /*image1*/, int /*image1_width*/, int /*image1_height*/,
|
||||
const float * /*image2*/, int /*image2_width*/, int /*image2_height*/,
|
||||
const double *x1, const double *y1,
|
||||
libmv_TrackRegionResult *result,
|
||||
double *x2, double *y2)
|
||||
{
|
||||
/* Convert to doubles for the libmv api. The four corners and the center. */
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
x2[i] = x1[i];
|
||||
y2[i] = y1[i];
|
||||
}
|
||||
|
||||
result->termination = -1;
|
||||
result->termination_reason = "Built without libmv support";
|
||||
result->correlation = 0.0;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void libmv_samplePlanarPatch(const float * /*image*/,
|
||||
int /*width*/, int /*height*/, int /*channels*/,
|
||||
const double * /*xs*/, const double * /*ys*/,
|
||||
int /*num_samples_x*/, int /*num_samples_y*/,
|
||||
const float * /*mask*/,
|
||||
float * /*patch*/,
|
||||
double * /*warped_position_x*/, double * /*warped_position_y*/)
|
||||
{
|
||||
/* TODO(sergey): implement */
|
||||
}
|
||||
|
||||
void libmv_samplePlanarPatchByte(const unsigned char * /*image*/,
|
||||
int /*width*/, int /*height*/, int /*channels*/,
|
||||
const double * /*xs*/, const double * /*ys*/,
|
||||
int /*num_samples_x*/, int /*num_samples_y*/,
|
||||
const float * /*mask*/,
|
||||
unsigned char * /*patch*/,
|
||||
double * /*warped_position_x*/, double * /*warped_position_y*/)
|
||||
{
|
||||
/* TODO(sergey): implement */
|
||||
}
|
||||
|
||||
/* ************ Tracks ************ */
|
||||
|
||||
struct libmv_Tracks *libmv_tracksNew(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void libmv_tracksInsert(struct libmv_Tracks * /*libmv_tracks*/, int /*image*/,
|
||||
int /*track*/, double /*x*/, double /*y*/, double /*weight*/)
|
||||
{
|
||||
}
|
||||
|
||||
void libmv_tracksDestroy(struct libmv_Tracks * /*libmv_tracks*/)
|
||||
{
|
||||
}
|
||||
|
||||
/* ************ Reconstruction solver ************ */
|
||||
|
||||
struct libmv_Reconstruction *libmv_solveReconstruction(const struct libmv_Tracks * /*libmv_tracks*/,
|
||||
const libmv_CameraIntrinsicsOptions * /*libmv_camera_intrinsics_options*/,
|
||||
libmv_ReconstructionOptions * /*libmv_reconstruction_options*/,
|
||||
reconstruct_progress_update_cb /*progress_update_callback*/,
|
||||
void * /*callback_customdata*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct libmv_Reconstruction *libmv_solveModal(const struct libmv_Tracks * /*libmv_tracks*/,
|
||||
const libmv_CameraIntrinsicsOptions * /*libmv_camera_intrinsics_options*/,
|
||||
const libmv_ReconstructionOptions * /*libmv_reconstruction_options*/,
|
||||
reconstruct_progress_update_cb /*progress_update_callback*/,
|
||||
void * /*callback_customdata*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int libmv_reprojectionPointForTrack(const struct libmv_Reconstruction * /*libmv_reconstruction*/,
|
||||
int /*track*/, double /*pos*/[3])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
double libmv_reprojectionErrorForTrack(const struct libmv_Reconstruction * /*libmv_reconstruction*/, int /*track*/)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
double libmv_reprojectionErrorForImage(const struct libmv_Reconstruction * /*libmv_reconstruction*/, int /*image*/)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
int libmv_reprojectionCameraForImage(const struct libmv_Reconstruction * /*libmv_reconstruction*/, int /*image*/,
|
||||
double /*mat*/[4][4])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
double libmv_reprojectionError(const struct libmv_Reconstruction * /*libmv_reconstruction*/)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
void libmv_reconstructionDestroy(struct libmv_Reconstruction * /*libmv_reconstruction*/)
|
||||
{
|
||||
}
|
||||
|
||||
/* ************ feature detector ************ */
|
||||
|
||||
struct libmv_Features *libmv_detectFeaturesByte(const unsigned char */*image_buffer*/,
|
||||
int /*width*/, int /*height*/, int /*channels*/,
|
||||
libmv_DetectOptions */*options*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct libmv_Features *libmv_detectFeaturesFloat(const float */*image_buffer*/,
|
||||
int /*width*/, int /*height*/, int /*channels*/,
|
||||
libmv_DetectOptions */*options*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int libmv_countFeatures(const struct libmv_Features * /*libmv_features*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void libmv_getFeature(const struct libmv_Features * /*libmv_features*/, int /*number*/,
|
||||
double *x, double *y, double *score, double *size)
|
||||
{
|
||||
*x = 0.0;
|
||||
*y = 0.0;
|
||||
*score = 0.0;
|
||||
*size = 0.0;
|
||||
}
|
||||
|
||||
void libmv_featuresDestroy(struct libmv_Features * /*libmv_features*/)
|
||||
{
|
||||
}
|
||||
|
||||
/* ************ camera intrinsics ************ */
|
||||
|
||||
struct libmv_CameraIntrinsics *libmv_reconstructionExtractIntrinsics(
|
||||
struct libmv_Reconstruction * /*libmv_reconstruction*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct libmv_CameraIntrinsics *libmv_cameraIntrinsicsNew(
|
||||
const libmv_CameraIntrinsicsOptions * /*libmv_camera_intrinsics_options*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct libmv_CameraIntrinsics *libmv_cameraIntrinsicsCopy(const libmv_CameraIntrinsics * /*libmvIntrinsics*/)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDestroy(struct libmv_CameraIntrinsics * /*libmvIntrinsics*/)
|
||||
{
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUpdate(const libmv_CameraIntrinsicsOptions * /*libmv_camera_intrinsics_options*/,
|
||||
struct libmv_CameraIntrinsics * /*libmv_intrinsics*/)
|
||||
{
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsSetThreads(struct libmv_CameraIntrinsics * /*libmv_intrinsics*/, int /*threads*/)
|
||||
{
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsExtractOptions(
|
||||
const libmv_CameraIntrinsics */*libmv_intrinsics*/,
|
||||
libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
|
||||
{
|
||||
memset(camera_intrinsics_options, 0, sizeof(libmv_CameraIntrinsicsOptions));
|
||||
camera_intrinsics_options->focal_length = 1.0;
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUndistortByte(const struct libmv_CameraIntrinsics * /*libmv_intrinsics*/,
|
||||
unsigned char *src, unsigned char *dst, int width, int height,
|
||||
float overscan, int channels)
|
||||
{
|
||||
memcpy(dst, src, channels * width * height * sizeof(unsigned char));
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsUndistortFloat(const struct libmv_CameraIntrinsics * /*libmvIntrinsics*/,
|
||||
float *src, float *dst, int width, int height, float overscan, int channels)
|
||||
{
|
||||
memcpy(dst, src, channels * width * height * sizeof(float));
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDistortByte(const struct libmv_CameraIntrinsics *libmvIntrinsics,
|
||||
unsigned char *src, unsigned char *dst, int width, int height,
|
||||
float overscan, int channels)
|
||||
{
|
||||
memcpy(dst, src, channels * width * height * sizeof(unsigned char));
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsDistortFloat(const struct libmv_CameraIntrinsics *libmvIntrinsics,
|
||||
float *src, float *dst, int width, int height, float overscan, int channels)
|
||||
{
|
||||
memcpy(dst, src, channels * width * height * sizeof(float));
|
||||
}
|
||||
|
||||
/* ************ utils ************ */
|
||||
|
||||
void libmv_cameraIntrinsicsApply(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options,
|
||||
double x, double y, double *x1, double *y1)
|
||||
{
|
||||
double focal_length = libmv_camera_intrinsics_options->focal_length;
|
||||
double principal_x = libmv_camera_intrinsics_options->principal_point_x;
|
||||
double principal_y = libmv_camera_intrinsics_options->principal_point_y;
|
||||
|
||||
*x1 = x * focal_length + principal_x;
|
||||
*y1 = y * focal_length + principal_y;
|
||||
}
|
||||
|
||||
void libmv_cameraIntrinsicsInvert(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options,
|
||||
double x, double y, double *x1, double *y1)
|
||||
{
|
||||
double focal_length = libmv_camera_intrinsics_options->focal_length;
|
||||
double principal_x = libmv_camera_intrinsics_options->principal_point_x;
|
||||
double principal_y = libmv_camera_intrinsics_options->principal_point_y;
|
||||
|
||||
*x1 = (x - principal_x) / focal_length;
|
||||
*y1 = (y - principal_y) / focal_length;
|
||||
}
|
||||
|
||||
void libmv_homography2DFromCorrespondencesEuc(double (* /* x1 */)[2], double (* /* x2 */)[2], int /* num_points */,
|
||||
double H[3][3])
|
||||
{
|
||||
memset(H, 0, sizeof(double[3][3]));
|
||||
H[0][0] = 1.0f;
|
||||
H[1][1] = 1.0f;
|
||||
H[2][2] = 1.0f;
|
||||
}
|
||||
|
||||
#endif // ifndef WITH_LIBMV
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user