游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4558|回复: 8

D3D室外场景绘制大量的草如何提高效率

[复制链接]

2

主题

6

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2014-2-13 19:40:53 | 显示全部楼层 |阅读模式
我最近再做一个户外场景,但是碰到一些瓶颈。其中一个就是想要绘制大量的草,但是帧速率严重下降?草是用两个互成角度的矩形片,贴上草的纹理做成的;所有的草的顶点数据都被我通过直接写入到事先创建好的顶点缓存中了? 每个草的顶点有八个,索引有12个,草的数量在130万以上。我的电脑跑起来只有十几帧。目前还咩有对草进行BVH管理。基本情况就是这样。现在我有两个问题想请大家帮帮忙:
  1、如何在绘制这么多的草的情况下,提高帧速率;
  2、进一步加大草的数量的情况下,比如说150万颗草,就绘制不出来了,这是神马原因?
我看有些游戏地形真的非常大啊,而且人家地上铺满了草,密密麻麻的,草的数量肯定比我的多,为什么人家的那么流畅呢?

34

主题

844

帖子

1755

积分

金牌会员

Rank: 6Rank: 6

积分
1755
发表于 2014-2-17 15:50:07 | 显示全部楼层
只渲染近处的草,不行吗?
远处的就别渲染了。

31

主题

257

帖子

1752

积分

金牌会员

申城谍影

Rank: 6Rank: 6

积分
1752
QQ
发表于 2014-2-17 17:43:36 | 显示全部楼层
远处的草,用长网格,做成LOD

1

主题

9

帖子

241

积分

中级会员

Rank: 3Rank: 3

积分
241
发表于 2014-2-18 16:59:02 | 显示全部楼层
草堆  懂了吗  你以为一片草地是一根根草来的?

2

主题

6

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2014-2-28 19:21:54 | 显示全部楼层
snghun 发表于 2014-2-17 15:50
只渲染近处的草,不行吗?
远处的就别渲染了。

对于只渲染近处的草确实是一个不错的方法,但是远处的草不渲染的话就会觉得特别假,如果远处也要渲染的话如何做成那个由朦胧然后渐变到没有?

2

主题

6

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2014-2-28 19:23:25 | 显示全部楼层
cndv3996 发表于 2014-2-17 17:43
远处的草,用长网格,做成LOD

你的意思是远处的草连成一片一起处理是吗?

2

主题

6

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2014-3-4 18:42:44 | 显示全部楼层
我有一个思路是和绘制毛发有关的,最后实现只能出现部分效果,但是密密麻麻的效果还是挺不错的,效率也很高,有兴趣的同学可以搜索Fur render,查看毛发绘制的思路?相信会给你一定的启发的

5

主题

26

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2015-4-30 09:34:07 | 显示全部楼层
0.将草体的纹理都打包在一张纹理里
1.先做视锥的剔除
2.尽量用shader的const register(uniform register)来实现instance方式的绘制草体
3.const register装不下的草体用普通的instance方式绘制绘
普通的instance的方式得用到多流和设置流频率,看SDK文档吧。
如果上述方式还是很慢的话就得减少剔除的距离或草体的数量。

0

主题

11

帖子

38

积分

禁止发言

积分
38
发表于 2015-5-18 06:09:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 20:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表