- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用DX9几何实例化(Instancing)模拟Tessellation
Heatonlan
本文不是介绍DX11Tessellation的使用,也不是直接用DX9去模拟DX11的3个Tessellation Stage,而是在DX9下通过一种比较简单的方法让一个模型做Tessellation,进而思考更多的可能性。
通常情况,几何实例化(Instancing)一个5000三角面的模型,16个实例,将产生一次16个5000面的渲染,结果是不同位置朝向和颜色等的16个实例;设象一下另外一种情况,将这个模型每个三角面都Tessellation成16个小三角形(标记为Tri0-Tri15),假设第一个实例是所有的Tri0构成的部分,第二个是所有Tri1构成的,以此类推,共16个实例;综合以上两点,设想首先让16个5000面的实例先重叠在一起,然后分别计算出各个实例对应的Tri0到Tri15,这样就完成了提交16个实例5000面模型到16 x 5000面一个模型的转变,具体如下:
均匀的Tessellation(每个三角形Tessellation成一样数量)
1.处理原模型:让每个顶点包含整个三角面的信息,并且记录当前顶点在这个三角形的顺序0或1或2.
示例顶点结构
struct PatchTessellation
{
D3DXVECTOR3 pos0;
D3DXVECTOR3 pos1;
D3DXVECTOR3 pos2;
D3DXVECTOR2 uv0;
D3DXVECTOR2 uv1;
D3DXVECTOR2 uv2;
DWORD v012;//顶点顺序
};
生成Tessellation Palette:以5000面16实例为例子,这里会生成16组参数,每组9个值,对应某个小三角形(Tri0到Tri15)的三个顶点在大三角形的权重.
示例代码
//tessellation palette
void CalcWeightNew(
int j0, int i0, int j1, int i1, int j2, int i2, int ijMax,//3 index pair
D3DXVECTOR3 w0, D3DXVECTOR3 w1, D3DXVECTOR3 w2)
{
// ^
// |
// p0 (i = 0)
// | \
// | \
// | \
// p1--------p2--j
// (0,0)
// | \
// | \
//(1,0)---(1,1)
// | \ | \
// | \ | \
//(2,0)---(2,1)--(2,2)
//
w0.x = 1.f - (float)i0 / (float)ijMax;
w0.y = (float)(i0 - j0) / (float)ijMax;
w0.z = (float)j0 / (float)ijMax;
w1.x = 1.f - (float)i1 / (float)ijMax;
w1.y = (float)(i1 - j1) / (float)ijMax;
w1.z = (float)j1 / (float)ijMax;
w2.x = 1.f - (float)i2 / (float)ijMax;
w2.y = (float)(i2 - j2) / (float)ijMax;
w2.z = (float)j2 / (float)ijMax;
}
//process for level n
// level = 3
// 0 \---1---2---3
// | \ \ | \ | \ |
// 4---5 \---6---7
// | \ | \ \ | \ |
// 8---9--10 \--11
// | \ | \ | \ \ |
// 12--13--14--15
for (int i = 0; i level; ++i)
{
for (int j = 0; j = i; ++j)
{
D3DXVECTOR3 weight[3];
// 0
// |\
// |_\
// 1 2
CalcWeightNew( j, i, j, i+1, j+1, i+1, level,
weight[0], weight[1], weight[2]);
// copy weight[3] to instancing buffer, and instancing buffer++
// 0__2
// \ |
// \|
//
您可能关注的文档
- 京津冀与长三角城群碳排放的空间聚集效应比较.PDF
- 人事工作总结及设想-武汉理工大学.PPT
- 人力资本理论评析及启示-西北农林科技大学学报.PDF
- 人参各部位水解产物PT及25OHPPD的含量测定-中国现代中药.PDF
- 人员及检测项目检查表.DOC
- 人工加速老化对老式胶卷结构与性能的影响-湖南城学院学报自然.PDF
- 人工智能的法律调整研究人工智能产业发展的经济-北京大学经济法.PDF
- 人口老龄化对储蓄率影响的实证研究-北京大学.PDF
- 人才岗位需求信息表.DOC
- 人才测评与人才甄选-中国科学院人才交流开发中心.DOC
- 安徽省亳州市高炉镇大呼中学2025-2026学年七年级上学期第二次月考语文试卷(含解析).docx
- 黑龙江省绥化市第八中学2024-2025学年九年级上学期期中考试英语试卷(含答案).docx
- 广东省深圳市龙岗区2025-2026学年七年级上学期期中英语试卷(含答案).docx
- 江苏省南通市海门中学2025-2026学年高一上学期期中语文试卷(含答案).docx
- 2026届高考小说阅读中“选择题”解题误区阐释与训练(含答案).docx
- 辽宁省沈阳市东北育才学校2026届高三上学期第三次模拟考试语文(含答案).docx
- 2025-2026学年江苏省邗江中学高一上学期第一次月考英语试题(含答案).docx
- 江西省景德镇市2024-2025学年七年级下学期6月期末考试语文试题(解析版).docx
- 河北省石家庄市新华区2025-2026学年八年级上学期期中考试语文试题(含答案).docx
- 江西省萍乡市2025-2026学年高二上学期期中考试英语试卷(含答案).docx
最近下载
- 23G409 先张法预应力混凝土管桩 conv.docx VIP
- 工贸企业重大事故隐患检查与典型事故案例.pptx
- 220kV线路工程架线施工方案.docx
- 教学能手题库及答案.doc VIP
- 《儿童智力障碍》课件.ppt VIP
- DB64_T 2081.2-2024 主要蔬菜病虫害农药减施增效技术规程 第2部分:设施黄瓜.docx VIP
- 《GBT 959.2-1986 挡圈技术条件 钢丝挡圈》知识培训.pptx VIP
- 测试题(八)《监督执纪工作规则》案例分析题专项测试.pdf VIP
- DB64_T 2143.1-2025 危险化学品企业气象灾害防御安全管理规范 第1部分:总则.docx VIP
- 初二物理《质量》说课.pptx VIP
原创力文档


文档评论(0)