惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
Engineering at Meta
Engineering at Meta
量子位
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
博客园 - 司徒正美
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
腾讯CDC
Jina AI
Jina AI
C
Check Point Blog
H
Help Net Security
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
爱范儿
爱范儿
I
InfoQ

博客园 - cproom

对人脑学习的一些领悟 象形法,快速记忆魔方公式 用Nvidia的PerfHud剖析《寻仙》 一种强大、灵活的方法,通过游戏逻辑参数化的控制特效表现 通过游戏逻辑对骨骼动画角色的局部骨骼进行控制,让游戏角色更加生动有趣! 在游戏中实现一个支持表情动画和转义字符的聊天文本框 一种适合网游的界面系统设计方案 一种3D引擎的多线程设计方案 场景管理,放弃场景图 对上一篇的补充,在用alpha test方式绘制草地、树林时,一种避免排序又能达到理想效果的技巧 GeoMipMap地形万能索引生成器 地形编辑器中的昼夜变化效果 镜头眩光(lens flare),截图 实现了昼夜变化、动态天空盒,上图 给Portal一些感性认识(2) 给Portal一些感性认识 很久没更新了,总结一下最近的工作进展(附截图) 完成通过法线贴图进行逐像素光照的功能,发图祝贺! 一种3D游戏碰撞检测解决方案
大规模草地的快速绘制排序
cproom · 2007-06-22 · via 博客园 - cproom

    在现在的3D游戏室外场景中大片的茂密草丛为游戏增色不少,是玩家游戏体验真实感的重要组成部分。众所周知,对于象草这样的半透明物体在绘制时需要按到摄像机由远至近的顺序进行排序,否则会出现视觉错误。如果每一帧都对成千上万的草进行排序,CPU开销是极大的,甚至是不可接受的。解决这一问题的方法有三个:
    一是只对近处的草进行排序,但在草的密度很大的时候依然有很大的cpu开销。
    二是使用alpha test方式进行绘制,从而避免对排序的要求。但这种方法对贴图质量要求极高,稍不注意就会在画面上产生明显的硬边或者镶边现象;
    三是通过一些技巧实现快速的绘制排序,既真实放映绘制顺序,又把CPU开销降低到可接受的程度。

    下面就介绍我对第三种方案的一种实现方法。首先在我的地形编辑器中草的数据是按地形块Patch组织的,对草的排序就变成两步实现,第一步对包含草的patch排序,第二步对每个patch上的草排序,这样最后只要按patch顺序绘制每个patch上的草就达到了对所有草的排序结果。
    这里的关键技巧在于对patch上的草进行排序并不是每一帧都做,也不是严格按照到摄像机的距离来做,而是根据摄像机相对patch所在的位置选择+x、-x、+z、-z四个方向之一进行排序。只有当摄像机相对于一个patch从一个象限运动到另一个象限时才需要对这个patch上的草进行排序。当摄像机连续运动的时候,对于一个特定的patch这种象限的变化很久才会发生一次,而且patch离摄像机越远,这种变化越慢。并且摄像机对可视区域内所有patch的象限变化并不是同时发生的,而是均匀分散在摄像机的运动过程中的,因此每一帧需要排序的patch是很少的,极大的降低了cpu开销。下面是参考图和效果对比图,对比图分别是同一视角没有排序和排序后的效果。