可见性剔除:遮挡、视锥与 Portal 的层级设计
可见性剔除遮挡、视锥与 Portal 的层级设计一、看不见的就不该画实时渲染的其一是条铁律是不可见的物体不渲染。一个开放场景里可能有十万物件但玩家同一时刻只能看到其中一小部分。把全部物件都送进管线是带宽与顶点处理的双重浪费。可见性剔除Visibility Culling就是一套把看不见的在最早阶段剔掉的层级体系是大规模场景帧率的基石。剔除不是单一技术而是分层递进先在最粗粒度砍掉整个区域再逐层细化到单个物体。每一层都面向不同规模的浪费组合使用才能把绘制调用压到最低。二、层级剔除的数据流典型的层级剔除从粗到细依次为视锥剔除、遮挡剔除、Portal 剔除。这一过程如同一个漏斗从场景全部物件开始逐级过滤直至提交绘制的可见集。视锥剔除最简单不在相机视野四棱锥内的直接丢弃遮挡剔除更聪明被前景大物体完全挡住的也被丢弃。Portal 剔除面向室内通过门洞Portal判断哪些房间可能可见房间外的直接跳过。三层漏斗逐级收窄可见集。三、生产级剔除查询与可见集构建实现下面是一段 C 示例展示如何用八叉树做视锥剔除并把可见集交给绘制。#includevector#includecmathstructAABB{floatminx,miny,minz,maxx,maxy,maxz;};structFrustumPlanes{floatp[6][4];};// 6 个平面: axbyczd// 球体与平面的有符号距离0 表示在背面staticinlinefloatDistToPlane(constfloatp[4],floatx,floaty,floatz){returnp[0]*xp[1]*yp[2]*zp[3];}// 用包围球做保守剔除球完全在任一平面背面则剔除boolIsVisible(constFrustumPlanesf,floatcx,floatcy,floatcz,floatr){for(inti0;i6;i){if(DistToPlane(f.p[i],cx,cy,cz)-r)returnfalse;// 保守宁可多画不可误剔}returntrue;}classCuller{public:std::vectorintCull(constFrustumPlanesf,conststd::vectorAABBboxes){std::vectorintvis;vis.reserve(boxes.size()/4);for(inti0;i(int)boxes.size();i){autobboxes[i];floatcx(b.minxb.maxx)*0.5f,cy(b.minyb.maxy)*0.5f,cz(b.minzb.maxz)*0.5f;floatrstd::sqrtf((b.maxx-b.minx)*(b.maxx-b.minx)(b.maxy-b.miny)*(b.maxy-b.miny)(b.maxz-b.minz)*(b.maxz-b.minz))*0.5f;if(IsVisible(f,cx,cy,cz,r))vis.push_back(i);}returnvis;// 返回可见索引集交由绘制提交}};这段代码的关键契约剔除必须保守——用包围球做测试宁可多画不可误剔。一旦错误剔除了本应可见的物体玩家会看到物体凭空消失比多画几帧更不可接受。生产环境应在八叉树或 BVH 上做层级剔除先砍整棵子树再细化到叶避免逐个物体裸测包围体更新需在物体移动时及时重算否则剔除会基于过期包围盒失效。在工程落地中遮挡剔除常采用软硬结合的策略。硬件遮挡查询适合GPU密集型场景但对室内复杂结构大多力不从心。此时需要软件遮挡体或预计算遮挡信息来补足。门户剔除则专门针对房间与走廊的连通关系玩家未穿过门就绝不加载门外内容对室内关卡收益极高。近年GPU驱动剔除把可见性判断下沉到绘制命令本身由GPU决定哪些绘制调用真正执行。进一步削减了CPU端的剔除开销与提交负担。四、保守误剔、遮挡精度与 CPU 开销的代价剔除的最大风险是误剔遮挡剔除若用不精确的遮挡体如用粗糙的盒代替真实遮挡物可能把本可见的物体判为被挡。导致穿帮。因此遮挡剔除常需保守的遮挡体或硬件遮挡查询GPU 回读但硬件查询本身有延迟与带宽成本需权衡。Portal 剔除依赖手工放置的门洞对自动化大世界不友好且 Portal 维护是额外美术工作量。CPU 侧剔除本身也有开销每帧遍历场景做可见性测试物件极多时这部分 CPU 时间不可忽略。需借助空间索引八叉树、BVH把复杂度从 O(N) 降到接近 O(log N)。收尾是过度剔除导致远处弹出的问题剔除太激进物件在转入视野瞬间才加载会有明显 pop-in需用淡入或预加载缓冲。所以落地建议剔除必须保守、用空间索引加速、遮挡用保守体或硬件查询Portal 配合手工放置远处用预加载缓冲防 pop-in。五、总结可见性剔除通过视锥、遮挡、Portal 的层级漏斗把不可见物体在最早期剔除是大规模场景帧率的基石。其风险是保守不足导致的误剔穿帮、遮挡精度与硬件查询成本的权衡、以及 CPU 侧测试的复杂度。工程落地须坚持保守剔除宁可多画借助八叉树或 BVH 把测试复杂度降到对数级遮挡剔除用保守遮挡体或硬件查询。并用预加载缓冲抑制远处 pop-in。包围体须在物体移动时及时更新避免基于过期数据失效。

相关新闻

ClipBERT性能优化指南:10个技巧提升视频问答准确率

ClipBERT性能优化指南:10个技巧提升视频问答准确率

ClipBERT性能优化指南:10个技巧提升视频问答准确率 【免费下载链接】ClipBERT [CVPR 2021 Best Student Paper Honorable Mention, Oral] Official PyTorch code for ClipBERT, an efficient framework for end-to-end learning on image-text and video-text tasks…

2026/7/24 1:31:42 阅读更多 →
Devstral-Small-2-24B-Instruct-2512-5bit:苹果MLX平台的终极视觉语言模型指南 [特殊字符]

Devstral-Small-2-24B-Instruct-2512-5bit:苹果MLX平台的终极视觉语言模型指南 [特殊字符]

Devstral-Small-2-24B-Instruct-2512-5bit:苹果MLX平台的终极视觉语言模型指南 🚀 【免费下载链接】Devstral-Small-2-24B-Instruct-2512-5bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Devstral-Small-2-24B-Instruct-2512-5bit …

2026/7/24 20:29:33 阅读更多 →
P1508 Likecloud-吃、吃、吃 【洛谷算法习题】

P1508 Likecloud-吃、吃、吃 【洛谷算法习题】

P1508 Likecloud-吃、吃、吃 网页链接 P1508 Likecloud-吃、吃、吃 题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢;挨饿,挨饿,再挨饿!” 题目描述 正处…

2026/7/25 17:05:10 阅读更多 →

最新新闻

Linux进程间通信(IPC)核心技术解析与实践指南

Linux进程间通信(IPC)核心技术解析与实践指南

1. 进程间通信的本质与意义在Linux系统中,进程就像一个个独立的房间,每个房间都有自己的内存空间和资源。但现实世界中的协作需求告诉我们,这些"房间"必须找到安全可靠的沟通方式。这就是进程间通信(IPC)技术…

2026/7/26 4:25:49 阅读更多 →
AI催眠系统架构解析:多模态交互与生物反馈技术

AI催眠系统架构解析:多模态交互与生物反馈技术

1. 项目背景与行业现状最近两年,心理健康科技赛道突然涌现出一批以"AI催眠"为核心功能的创新产品。这类产品通过智能算法模拟专业催眠治疗师的引导过程,帮助用户缓解失眠、焦虑等睡眠障碍问题。根据市场调研数据显示,全球约有30%的…

2026/7/26 4:25:49 阅读更多 →
力扣347-前K个高频元素

力扣347-前K个高频元素

347. 前 K 个高频元素 - 力扣(LeetCode) 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入:nums [1,1,1,2,2,3], k 2 输出:[1,2…

2026/7/26 4:25:49 阅读更多 →
AI时代第三方开发者的生存策略与平台依赖风险

AI时代第三方开发者的生存策略与平台依赖风险

1. 事件背景:Anthropic与OpenClaw的订阅体系冲突2023年,AI领域发生了一起标志性事件——Anthropic突然将第三方工具OpenClaw从其Claude订阅体系中移除。表面看这只是平台对违规API调用的常规处理,但深入分析会发现,这揭示了AI时代…

2026/7/26 4:25:49 阅读更多 →
CTF PWN入门:从零搭建二进制漏洞实验环境

CTF PWN入门:从零搭建二进制漏洞实验环境

1. 项目概述作为一名在二进制安全领域摸爬滚打多年的老手,我深知一个稳定可靠的学习环境对CTF PWN入门者的重要性。很多新手往往在环境搭建阶段就耗费大量时间,甚至因此放弃学习。这份手册将带你从零开始,用最直接的方式搭建完整的PWN实验环境…

2026/7/26 4:25:49 阅读更多 →
Unity 2022 Mono调试DLL定制:从源码编译到深度调试实战

Unity 2022 Mono调试DLL定制:从源码编译到深度调试实战

1. 项目概述:为什么我们需要定制Unity的调试DLL?如果你是一名Unity开发者,尤其是从事游戏安全、性能深度优化或者引擎底层功能扩展的同行,那么你一定遇到过这样的困境:Unity引擎自带的调试功能,在应对一些复…

2026/7/26 4:24:49 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻