请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 737|回复: 2

代码中怎么组织多通道渲染? [复制链接]

Rank: 5Rank: 5

注册时间
2014-3-1
积分
53
发表于 2017-7-29 14:11:57 |显示全部楼层
我现在的需求是这样的:一个模型有许多不同的mesh,每个mesh所表现的显示效果可能不同,比如模型A,有M1,M2,M3面组成,M1和M2,M3所需显示的下过不一样;M1需要先正面渲染,再反面渲染,然后正反面得到的纹理叠加,得到纹理T1;M2用一次环境映射,得到纹理T2;M3用一般的光照渲染,得到纹理T3;最后将这到的三个纹理最后叠加。

现在实现的都是用FBO罗列一堆,这种逻辑能够抽象出来一种多通道的渲染吗?使用的时候只需载入我的渲染逻辑,然后一个渲染函数就能搞定?

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-6-11
积分
29818
发表于 2017-7-29 15:30:49 |显示全部楼层
这个问题其实和渲染都没关系,本质上就是数据和逻辑+控制组织,跟许多行业的多阶段任务流的很相似。

首先想M1 M2 M3步骤所需要的输入、处理、输出,然后针对处理,确认需要的中间资源,包括额外的RT等等。然后每一步都有输出。最后针对这些逻辑和所需要资源进行优化,去除冗余,然后这个逻辑就可以表现为,一个函数丢进去,逻辑跑完,收工。

那么写成代码的话就是牵涉到实现的问题。我猜你所想的是一种流水线定义,然后载入,程序就直接挨个处理,直接完成。这个当然可以做到。比如在你的定义中,你可以声明几何体数据来源,M123这种,然后组织渲染的具体流程,以及参数,最后声明输出的结果。最后把各个步骤的输出结果再来组合,收工。

使用道具 举报

Rank: 5Rank: 5

注册时间
2014-3-1
积分
53
发表于 2017-7-29 19:16:54 |显示全部楼层
Jedimaster 发表于 2017-7-29 15:30
这个问题其实和渲染都没关系,本质上就是数据和逻辑+控制组织,跟许多行业的多阶段任务流的很相似。

首先 ...

谢谢解惑!

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-10-21 16:40 , Processed in 0.081409 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部