| 281 | } |
| 282 | |
| 283 | void execute(SceneManager *sm, RenderSystem *rs) override |
| 284 | { |
| 285 | // Fire listener |
| 286 | instance->_fireNotifyMaterialRender(pass_id, mat); |
| 287 | // Queue passes from mat |
| 288 | for(auto* pass : technique->getPasses()) |
| 289 | { |
| 290 | int tuIdx = 0; |
| 291 | for(auto* tu : pass->getTextureUnitStates()) |
| 292 | rs->_setTextureUnitSettings(tuIdx++, *tu); |
| 293 | auto params = pass->getGpuProgramParameters(GPT_COMPUTE_PROGRAM); |
| 294 | params->_updateAutoParams(sm->_getAutoParamDataSource(), GPV_GLOBAL); |
| 295 | rs->bindGpuProgram(pass->getComputeProgram()->_getBindingDelegate()); |
| 296 | rs->bindGpuProgramParameters(GPT_COMPUTE_PROGRAM, params, GPV_GLOBAL); |
| 297 | rs->_dispatchCompute(thread_groups); |
| 298 | } |
| 299 | rs->unbindGpuProgram(GPT_COMPUTE_PROGRAM); |
| 300 | } |
| 301 | }; |
| 302 | |
| 303 | //----------------------------------------------------------------------- |
nothing calls this directly
no test coverage detected