|
??????????????????????????????????????????????????????????
?GDC2023??????Core concept??????????????Tao????????????????????????????SOC????SOC???????????? iPhone 6s???????????1.5ms????????????????????????????????????????
????????????????????????
????????????????????????????????????????????????????? 3 ?????????????????????????????????
?????????????????????????TPS?????????????????????????????????????????????????????????
?????????????
- ?????Occlusion Culling?????????????????????????
- ????Occluder?????????????????????????????????
- ?????Occludee????????????????????
- ????Culling rate ?????????????????????? = ?????????? / ?????????
- ?????False Occlusion????????????????????????????????????????????????????????????????????
??????
???????????????????????????????????????????60%?????????????????????????????????????
???????????????????????????????
???????????????????????????????????
?????????????????????????????
???????????????????????????????????????????????
???????????????????????????? ?Potential Visible Set? ???? PVS ????????????????????SOC?
?????PVS????????????????????????????
SOC ??????????????????????????????????????????????????????????? SOC ??????????????????????
???????????? SOC ??????????????????????????????????????
?????
??????????????????????
???? 3 ????????????????soc ???????????????????????????????????????????????????????????
???????????????????????
???????Occlusion Mesh Generator?
????????????????
???? 2 ??????????????????????????????????
?????????????????????????????
2.1 ??SOC??????SOC????
??SOC??
????????????????????????????Masked Software Occlusion Culling?MSOC????Intel?2016?????????????PC???????SOC?????
???????????MSOC????
??????? AVX ? CPU ??????????????????????????????wedge??????????????????????????????????? ??????????'????????????????????????
?????????????????????????????
???SOC??
?????????????SOC ???????????????????? MSOC ?????????????????????????????
??????SOC ???????????
???????? SIMD ???????????????SIMD ???Arm Neon???????????????????????????????
?????????????????????????????????????BackfaceCulling?????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????Early Out????????????????????????????????????????????????
2.2 ???????????
???????
?????????????????? 256x160?????????????? 4 ? bin??? bin ???????80 ???? ??????? 4 ???????? 8*4 ??????? ????????????
????????? 128 ???????? m128i?4 ???????? m128??????4?float32?
???????
?????
???????????????????
??????????? Z ?????????????????????????Z (Reversed-Z) ??????????????????????
?????????????????????0??????????????????????????????'c'??????????????????4???????????1 ???????????????????????????SIMD (Single Instruction Multiple Data??????????)?????
????
2.3 ?????????Wedge Collecting Phase?
???????????????????????????????????????????????????????????????
???????, ????? 1 ???????????????????????????????????????????????????????????
??????????????
? MSOC ????????????????????????????????
???????????????????????????????????
??????
???????????
??????????? ?????????????????????????????????? ??????????????????????????????????????????????????????????????????????
?????????????
???????
???????????????????????
????????????????????????????????????????????????????????????????????????????? 4000????????????????
2.4 ?????Preparation Phase?
?????????
????
????????????????????????
???????????????????????????????????????????????????? SIMD ?????????
?????????SIMD????????????????????????????????
???????????????? 2 ??????????????????????????????????
??? 3 ????
- ???
- V0 ? y ???
- ???????? y ???
??MSOC?????????????????????????????????????????????? MSOC??????????????????? 22 ?SIMD ?????????????????????????????????????????????????
???????????????????v0????????????v1?v2????????????????????v1?v2???????????
2.5 ??????Rasterization Phase?
???????????????????????????????????????????????????????????????????
? MSOC ????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????
???????????????????????????????????
?????????????? AABB ?????????????????????????????????????????
?????????????????????????????????????????????????????????????????? 50% ????????
????????????????????????????????????????? 0.4 ??? ???????????????????? 0.56 ??? ??????Early Out???????????????????? 50% ??????
?????????Optimized Culling Pipeline?
????????????
??????????????????????????????????????????????
?????????????????
????????????????????????????????
??????????????????????????????????5000 ??????? 1.5ms ?????? SOC ????????????????????
3.1 ???????
3.1.1 ????
???????????????????
???????????????????????????????????
??
??????????????????????????????????????5???????Cache Fetch????3?????????????????5???????2?Cache Fetch?
??????
?????????????? ??????? ?Bounding Volume Hierarchy ?BHV??? ????Octree??????????????
???????? 2???????? Parent Bounding Volume?PBV???V1?V2?????????????V2????????????C?D?E??????????????????????????? 1 ?????????????????????????????????????????????3?Cache Fetch??????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????
????????????????????????????????????????????????????????????????????????????????????????????????????????
??????cache line? ?????????????????Cache Fetch???????????????????????????????????????????????????????????????????????????? ?
???????????????????0.3??????????
3.1.2 ????
????????????????????????
???????????????cache miss???????????
???????????????????????????????CPU ???????????????????????????????????????
??????????????????(vtable)???????vtable????????????????????????????????????????????????????????
??????????CPU?????????????????????
?????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? 0.5ms ??????
3.1.3 ?????
?????????????
????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????
??????????????????
?????????? 80% ?????????????????????????????????????????????????0.05ms?
3.2 ????????????
??????????????????????????????????????????????????????????????Self Occlusion????????????????????????
?????????????????????????????????????????????????????????????????????
????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????
?????????????????????????
???????????????
0?????????????????????????????
??? 1 ???????????????1????????????????
???????????????????????????????????????1???????????????????????????1?????????????????????
???????????????????????????????????????????????????????????????????????
????????????????????????????????????????? 50% ?????????????????????????????????????????????????????????1539???874?
3.3 ?????
??????????????????????
??????????????? ARMbig.LITTLE ????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????0.25ms ????
???????????????????????????????????????iPhone6s??????? 1.5ms ??????0.4???
????????????????????High-quality Occlusion Mesh Generator?
???????????????????????????????????????????????????????
????????????
????????????????? 2ms??????????????????????????????4000??????????????????????????????????????????????????????????????35%????????????
???????????????? 100 ????????????????????? 10 ?????????????4000?????????????????
???????????????????????
????????????????
???????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????
4.1 ?????Smoothing?
????????????????????????????????????????????????3D Mesh???????????????????????
??Mesh
??????????????????????????????Mesh????????
????????????????????????????
???????????????????????????????????????
????
???????????????????????????
??????????????????????????????????????????????????????? True???? False?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????
??????
???????????? ????????near ? far??? near ??AABB???????far???????????
????????????????????????????????????? 3 ???????
???????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????
?????????????????????? near ? far ??????????????????????????????????????????????????????
?????Constraint???Mesh
?????Constraint???????????????????????????????????????????????????????
?????????????????????????????????????????????
?????????? 2 ??????????????????????????????????????????????????????????????????
??????Voxel SA ? SB ?????? IA ? IB ???? IA ? IB ????????SA ? SB ??????
?????????????????????????????????????????????????????
4.2 ?????Filtering?
?????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????? ground truth? ????????10 ??????????
4.3 ???????Triangulating?
?????????????????????????????????
???????????????????????????????????????
??????????????-?????Ramer-Douglas-Peucker?????????????
??????????????Ear Clipping?????????????????????
?????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????
????? 75240??????????????????900????????????????????????????????????????????
??????????????? 10k ??????????? 900 ??????????????????????
????????????????????????????5%????????????????
??
?????????????????????????????2ms ???? 65% ????
?Iphone 6s?????? SOC ?????1ms ??? 65% ????????????????????????????????1.5ms??????? 91%?
?????????????????????????????????
- ????? SOC ??????????
- ??????????????????
- ???????????????????????????????
????????????????????????????????????????????????????????????????
?/Tao
|
|