Unity HybridRender 使用Unity.Rendering.FrustumPlanes 结构体来实现视锥体裁剪。这个结构体基本都为静态函数,其中使用NativeArray<PlanePacket4>作为参数的函数是HybridRenderSystem中进行裁剪的函数。从试验结果看,如果需要在逻辑层判断是否在视锥体内,可以考虑使用FromCamera(Camera camera, NativeArray<float4> planes)构造视锥体6个平面,然后使用Intersect(NativeArray<float4> cullingPlanes, AABB a)这个函数获取判断结果。判断结果是个enum:Out,In, Partial。

using FrustumPlanes = Unity.Rendering.FrustumPlanes;public class FrustumCut : SystemBase{Camera mainCam = null;string camTag = "MainCamera";protected override void OnCreate(){base.OnCreate();mainCam = FindCamera(camTag);}[BurstCompile]protected override void OnUpdate(){if (mainCam == null){mainCam = FindCamera(camTag);return;}var plans = new NativeArray<float4>(6, Allocator.TempJob);FrustumPlanes.FromCamera(mainCam, plans);Dependency = Entities.ForEach((Entity e, int entityInQueryIndex,in WorldRenderBounds bounds ) =>{var r = FrustumPlanes.Intersect(plans, bounds.Value);//DO ANYTHING HERE...}).Schedule(Dependency);plans.Dispose(Dependency);}Camera FindCamera(string tag){var go = GameObject.FindGameObjectWithTag(tag);if (go == null)return null;return go.GetComponent<Camera>();}}
}

Unity HybridRender 视锥体裁剪相关推荐

  1. DirectX11进阶5_硬件实例化与视锥体裁剪及鼠标拾取交互

    一.硬件实例化(Hardware Instancing) 硬件实例化指的是在场景中绘制同一个物体多次,但是是以不同的位置.旋转.缩放.材质以及纹理来绘制(比如一棵树可能会被多次使用以构建出一片森林). ...

  2. DirectX11 With Windows SDK--20 硬件实例化与视锥体裁剪

    DirectX11 With Windows SDK--20 硬件实例化与视锥体裁剪 原文:DirectX11 With Windows SDK--20 硬件实例化与视锥体裁剪 前言 这一章将了解如何 ...

  3. 视锥体裁剪(从矩阵中提取6个裁剪面)

    视锥体(frustum),是指场景中摄像机的可见的一个锥体范围.它有上.下.左.右.近.远,共6个面组成.在视锥体内的景物可见,反之则不可见.为提高性能,只对其中与视锥体有交集的对象进行绘制. 视锥体 ...

  4. 【Unity】相机视锥体剔除算法

    视锥体剔除是Unity常用的剔除方法,其原理就是通过判定目标包围盒与组成相机视锥体的6个平面进行同侧判定,只要在6个平面之间的包围盒即为可见. 具体原理可见参考以下文章: 视锥体剔除(Frustum ...

  5. 斜视锥体裁剪Camera.CalculateObliqueMatrix的推导

    截取自:https://blog.csdn.net/puppet_master/article/details/80808486 原文是实现平面反射的过程中出现了,裁剪错误的问题,通过限制反射相机的投 ...

  6. 【unity】性能优化之——视锥体剔除(Frustum Culling)(一)

    一.应用背景 在现代游戏中,游戏资源越来越多,游戏场景也越来越大越来越复杂,虽说硬件设备更新迭代很快,性能也日渐强大,但这还远不能缓解复杂繁多的资源带来的性能压力,因而性能优化仍然很有必要.场景资源的 ...

  7. 游戏场景管理(二)视锥体剔除

    在学习场景管理之前,我们要先学习一下视锥体剔除(VFC),因为无论你使用什么空间划分算法,划分的空间都要进行视锥体剔除,被剔除的空间内部的所有物件都会被抛弃以此来加速渲染或碰撞.这也是场景管理的核心目 ...

  8. 土圭垚㙓数学课(二)视锥体八个顶点的计算方法

    视锥体是摄像机可见的空间,看上去像截掉顶部的金字塔.视锥体由6个裁剪面围成,构成视锥体的4个侧面称为上左下右面,分别对应屏幕的四个边界.为了防止物体离摄像机过近,设置近切面,同时为了防止物体离摄像机太 ...

  9. 【基础】什么是视锥体

    前言 视锥体常出现在计算机3D图形软件当中,用于定义用户的视角. 理解视锥体对掌握好3D图形图像有很大的好处. 目录 前言 视锥体 约束 总结 参考资料 视锥体 视锥体是摄像机可见的空间,看上去像截掉 ...

最新文章

  1. 2009_01_15_星期三
  2. JZOJ 3418. 【NOIP动态规划专题】选课
  3. Android 设置界面的圆角选项
  4. 限速会自动恢复吗_骨折会自己好吗?骨折后怎样做恢复快?
  5. mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败
  6. 斯坦福大学机器学习公开课视频及课件
  7. 微软拥抱开源_如何拥抱开源劳动力
  8. 证券投资深度学习_安信证券:“深度学习”开启新一轮计算模式变革
  9. springboot文件上传下载实战 —— 登录功能、展示所有文件
  10. visio业务流程图教学_用visio软件怎样画数据流程图和业务流程图?
  11. 仿饿了么微外卖系统php,【外卖小程序】仿美团外卖源码 版本号v1.7 – 亲测可用 饿了么小程序 外卖小程序...
  12. mongodb基本数据类型
  13. 语音识别(html5+nodejs)
  14. STL之算法——排序算法
  15. matlab经典例题及答案,matLAB经典例题及答案.pdf
  16. LED电子时钟,时间显示屏,网络子母钟系统方案(京准电子)
  17. android 水波纹扩散动画,[Android]多层波纹扩散动画——自定义View绘制
  18. redis-GEO地理位置
  19. 天池大数据众智平台 - 数据科学家社区
  20. excel函数提取计算机登录名,Excel查找函数FIND,帮你从复杂的地址中提取城市、区和街道名!-提取文件名...

热门文章

  1. 绝地求生pubg物理压枪芯片源码+成品
  2. Squid之正向代理反向代理
  3. OpenStack 命令行速查表
  4. WebStorm设置前端开发代码规范
  5. SuperPoint:深度学习特征点+描述子
  6. Java设计模式之JDK动态代理模式
  7. 微型计算机接口技术刘乐善答案,微型计算机接口技术及应用习题答案(刘乐善)...
  8. 【论文写作】闵帆老师论文写作课程心得体会30篇
  9. 【免费认证】Juniper部分认证2009.12.31前考试免费!
  10. linux命令系列 alias,Linux命令整合之alias