| 528 | } |
| 529 | |
| 530 | Var* ShaderFeatureGLSL::getObjTrans( Vector<ShaderComponent*> &componentList, |
| 531 | bool useInstancing, |
| 532 | MultiLine *meta ) |
| 533 | { |
| 534 | Var *objTrans = (Var*)LangElement::find( "objTrans" ); |
| 535 | if ( objTrans ) |
| 536 | return objTrans; |
| 537 | |
| 538 | if ( useInstancing ) |
| 539 | { |
| 540 | ShaderConnector *vertStruct = dynamic_cast<ShaderConnector *>( componentList[C_VERT_STRUCT] ); |
| 541 | Var *instObjTrans = vertStruct->getElement( RT_TEXCOORD, 4, 4 ); |
| 542 | instObjTrans->setStructName( "IN" ); |
| 543 | instObjTrans->setName( "inst_objectTrans" ); |
| 544 | |
| 545 | mInstancingFormat->addElement( "objTrans", GFXDeclType_Float4, instObjTrans->constNum+0 ); |
| 546 | mInstancingFormat->addElement( "objTrans", GFXDeclType_Float4, instObjTrans->constNum+1 ); |
| 547 | mInstancingFormat->addElement( "objTrans", GFXDeclType_Float4, instObjTrans->constNum+2 ); |
| 548 | mInstancingFormat->addElement( "objTrans", GFXDeclType_Float4, instObjTrans->constNum+3 ); |
| 549 | |
| 550 | objTrans = new Var; |
| 551 | objTrans->setType( "mat4x4" ); |
| 552 | objTrans->setName( "objTrans" ); |
| 553 | meta->addStatement( new GenOp( " @ = mat4x4( // Instancing!\r\n", new DecOp( objTrans ), instObjTrans ) ); |
| 554 | meta->addStatement( new GenOp( " @[0],\r\n", instObjTrans ) ); |
| 555 | meta->addStatement( new GenOp( " @[1],\r\n", instObjTrans ) ); |
| 556 | meta->addStatement( new GenOp( " @[2],\r\n",instObjTrans ) ); |
| 557 | meta->addStatement( new GenOp( " @[3] );\r\n", instObjTrans ) ); |
| 558 | } |
| 559 | else |
| 560 | { |
| 561 | objTrans = new Var; |
| 562 | objTrans->setType( "float4x4" ); |
| 563 | objTrans->setName( "objTrans" ); |
| 564 | objTrans->uniform = true; |
| 565 | objTrans->constSortPos = cspPrimitive; |
| 566 | } |
| 567 | |
| 568 | return objTrans; |
| 569 | } |
| 570 | |
| 571 | Var* ShaderFeatureGLSL::getModelView( Vector<ShaderComponent*> &componentList, |
| 572 | bool useInstancing, |
nothing calls this directly
no test coverage detected