next gen RTSS

Discussion area about developing or extending OGRE, adding plugins for it or building applications on it. No newbie questions please, use the Help forum for that.
Post Reply
OGRE Team Member
OGRE Team Member
Posts: 749
Joined: Sun Mar 30, 2014 2:51 pm
x 116

next gen RTSS

Post by paroj » Fri Nov 16, 2018 7:56 pm

A major RTSS update just landed in the 1.11 branch. It updates the API following the DRY (do not repeat yourself) principle making it considerably easier to write new functionality.
The difference is best visualised by an example. So lets take a look at a rather simple snippet from FFPTransform before

Code: Select all

FunctionInvocation* transformFunc = OGRE_NEW FunctionInvocation(FFP_FUNC_TRANSFORM,  FFP_VS_TRANSFORM);
transformFunc->pushOperand(wvpMatrix, Operand::OPS_IN);
transformFunc->pushOperand(positionIn, Operand::OPS_IN);
transformFunc->pushOperand(positionOut, Operand::OPS_OUT);

UniformParameterPtr pointParams = vsProgram->resolveAutoParameterReal(GpuProgramParameters::ACT_POINT_PARAMS, 0);
ParameterPtr pointSize = vsEntry->resolveOutputParameter(

transformFunc = OGRE_NEW FunctionInvocation("FFP_DerivePointSize", FFP_VS_TRANSFORM);
transformFunc->pushOperand(pointParams, Operand::OPS_IN);
transformFunc->pushOperand(positionOut, Operand::OPS_IN, Operand::OPM_W);
transformFunc->pushOperand(pointSize, Operand::OPS_OUT);
and after

Code: Select all

auto stage = vsEntry->getStage(FFP_VS_TRANSFORM);
stage.callFunction(FFP_FUNC_TRANSFORM, wvpMatrix, positionIn, positionOut);

UniformParameterPtr pointParams = vsProgram->resolveParameter(GpuProgramParameters::ACT_POINT_PARAMS);
ParameterPtr pointSize = vsEntry->resolveOutputParameter(Parameter::SPC_POINTSPRITE_SIZE);

stage.callFunction("FFP_DerivePointSize", pointParams, In(positionOut).w(), pointSize);
the new code is quite close to being readable I would say. The the RTSS documentation has been updated accordingly: ... extensions
0 x

Post Reply