/* ///{{Slot = VM_DoSkin Input { float4 Pos : POSITION; float4 Nor : NORMAL; float4 Color : COLOR; float4 Weights : BLENDWEIGHT; int4 BoneIdxs : BLENDINDICES; }
Output class=VM_SkinRet { float4 Pos: TPOSITION; float4 Nor: TNORMAL; float4 Tan: TTANGENT; } ///}} */
///{{Declaration struct SKINMESHVS_INPUT { float4 Pos : POSITION; float4 Nor : NORMAL; float4 Color : COLOR; float4 Tan : TANGENT; float4 Weights : BLENDWEIGHT; int4 BoneIdxs : BLENDINDICES; float2 Tex : TEXCOORD; };
struct VM_SkinRet { float4 Pos; float4 Tan; float4 Nor; }; #define _CBUFFER_ANI_ #ifdef _CBUFFER_ANI_ tbuffer BoneFrame { float4x4 matBone[256]; } #else Buffer<float4> BoneFrame;//[256] #endif
VM_SkinRet VM_DoSkin(float4 Pos , float4 Nor , float4 Tan , float4 Weights , int4 BoneIdxs); #undef VS_INPUT #define VS_INPUT SKINMESHVS_INPUT ///}}
///{{SourceCode float4x4 ToNormalMat(float4x4 mat) { float4x4 matNormal = mat; matNormal[3] = float4(0.0f,0.0f,0.0f,1.0f); matNormal[0][3] = 0.0f; matNormal[1][3] = 0.0f; matNormal[2][3] = 0.0f; return matNormal; }
VM_SkinRet VM_DoSkin(float4 Pos , float4 Nor , float4 Tan , float4 Weights , int4 BoneIdxs) { VM_SkinRet ret;
float vWeight[4]; vWeight[0] = Weights.x; vWeight[1] = Weights.y; vWeight[2] = Weights.z; vWeight[3] = Weights.w;
int vBoneIdxs[4]; vBoneIdxs[0] = BoneIdxs.x; vBoneIdxs[1] = BoneIdxs.y; vBoneIdxs[2] = BoneIdxs.z; vBoneIdxs[3] = BoneIdxs.w;
float4 vPos = float4(0.0f,0.0f,0.0f,0.0f); float4 vNor = float4(0.0f,0.0f,0.0f,0.0f); float4 vTan = float4(0.0f,0.0f,0.0f,0.0f);
for(int i = 0 ; i < 4 ; i ++ ) { #ifdef _CBUFFER_ANI_ float4x4 matPos = matBone[ vBoneIdxs[i] ]; #else int iBone = vBoneIdxs[i]; iBone *= 4; float4 row1 = BoneFrame.Load( iBone ); float4 row2 = BoneFrame.Load( iBone + 1 ); float4 row3 = BoneFrame.Load( iBone + 2 ); float4 row4 = BoneFrame.Load( iBone + 3 );
float4x4 matPos = transpose(float4x4( row1, row2, row3, row4 )); #endif
float4x4 matNor = ToNormalMat(matPos); vPos += vWeight[i] * mul( matPos , Pos ); vNor += vWeight[i] * mul( matNor , Nor ); vTan += vWeight[i] * mul( matNor , Tan ); }
vPos.w = 1.0f; vPos = mul( matWorld , vPos); vPos = mul( matView , vPos); ret.Pos = mul( matProject , vPos);
float matNor = ToNormalMat(matView); ret.Nor = mul( matNor , vNor ); ; ret.Tan = mul( matNor , vTan ); ;
return ret; } ///}}
|
相关推荐
2020年全球电子废弃物监测报告
论文研究-组合政策下建筑废弃物管理模型的动态仿真.pdf, 为减少建筑废弃物非法倾倒总量和提高其回收利用率,本文先后引入了惩罚和补贴机制,并以深圳市为例运用系统动力...
为了降低废弃物及废弃煤矿对环境的污染,提出了废弃煤矿废弃物灌注技术的可行性。分析了可灌注废弃物的种类,讨论了目标地层的选择原则。提出采用可控充填、低压充填以及高压灌注等3阶段液力充填方法对废弃煤矿进行...
废弃物处理记录表.doc
诸多矿井因生命周期到达或去产能要求而关闭,煤矿进入结构调整及转型升级阶段,废弃煤矿数量持续增加。基于数据统计及分析,回顾了煤炭工业发展历程,阐明了废弃煤矿形成原因,提出了废弃煤矿基本概念。从五大区煤炭资源...
本文论述了废弃油井对煤矿开采的影响及废弃裸眼石油井的封堵技术,并以双马煤矿废弃未封堵的或封堵不良的废弃油井为例,通过井口查找、开挖、透孔、水泥封堵、加压验封等工程措施,完成废弃油井地面封堵治理工程。...
论文研究-建筑废弃物管理的经济有效性动态评估模型.pdf, 基于系统动力学理论与方法, 对建筑废弃物管理活动的经济有效性进行了研究. 首先根据影响建筑废弃物管理活动经济...
结果表明,废弃物的分解率TG曲线呈阶段特征,白泥为两阶段煅烧分解模式,电石渣、碱渣和盐泥均为多阶段分解模式,而石灰石为一阶段分解模式;白泥、电石渣和石灰石具有相似的动力学特性,煅烧活化能E随分解率α的增大而...
3-3海区废弃物倾倒及石油勘探开发污染物排放入海情况(2018年)._ODName3-3 海区废弃物倾倒及石油勘探开发污染物排放入海情况(2018年).xls
医疗废弃物多目标多周期可持续回收网络优化.rar
医疗废弃物多目标多周期可持续回收网络优化.pdf
我国煤矿资源大多处于中西部地区,随着煤炭矿区资源的不断开发,由废弃煤矿带来的各种环境问题及其引发的其他社会矛盾日益突出。文章通过分析诱发废弃煤矿各种环境问题的原因,将废弃煤矿环境负效应归为五大类,包括岩...
汤原县废弃矿山生态修复规划 (2020-2025年)(23页).pdf
2021年城市社区居民生活废弃物管理信心指数与意识行为研究.pdf 2021年城市社区居民生活废弃物管理信心指数与意识行为研究.pdf 2021年城市社区居民生活废弃物管理信心指数与意识行为研究.pdf 2021年城市社区居民生活...
利用多糖大分子稳定的磁铁矿和铁锰双金属氧化物固定家禽废弃物中砷的研究,梁绮绮,韩冰,本文制备了多糖修饰的磁铁矿和Fe-Mn双金属氧化物纳米颗粒,并将其用于从家禽废物(PL)中固定砷(As),从而降低As浸出。...
根据2000年以来我国生产矿井数量和近年新建矿井数量,得出2000—2016年每年废弃矿井数量和累计废弃矿井总数;系统分析了废弃矿井潜在地质灾害隐患问题;提出不同地质灾害的防控技术和关键对策,并针对废弃矿井地下和地面...
通过对北京市门头沟区废弃矿山土地自身和周边条件进行实地调查,采用特殊因子与基本因子、定性与定量相结合的方法,建立了废弃矿山土地开发再利用评价指标体系,提出了废弃矿山土地开发再利用的对策建议。评价结果表明:...
医疗废弃物管理台账
常州市武进区内的废弃露采矿山宕口造成山体破损面积412.03 hm2,存在毁坏土地资源、植被破坏和水土流失、地质灾害隐患多、破坏地貌景观影响旅游资源开发等地质环境问题。通过削石降坡、削坡反压、整坡与清坡等措施,...
文中介绍了我国废弃煤矿概况及其遗留的地质环境问题,通过收集国内外废弃煤矿开发利用的实践,根据废弃煤矿资源的井上下空间位置,介绍了目前废弃煤矿资源再利用的各种方式,如矿山公园、井下空间利用、生态修复等,根据...