-------------------------------------------------------------------------------------- Description: Execute compute shaders in all passes of the specified effect. The function will unset bound UAVs after each pass. Arguments: effect - Effect containing compute shaders groupDim# - group grid sizes renderContext - current render context Return Value: true On success false On failure ----------------
| 846 | // false On failure |
| 847 | // -------------------------------------------------------------------------------------- |
| 848 | bool Tr2Renderer::RunComputeShader( Tr2Material* effect, |
| 849 | unsigned groupDimX, |
| 850 | unsigned groupDimY, |
| 851 | unsigned groupDimZ, |
| 852 | Tr2RenderContext& renderContext ) |
| 853 | { |
| 854 | if( !effect ) |
| 855 | { |
| 856 | return false; |
| 857 | } |
| 858 | auto shader = effect->GetShaderStateInterface(); |
| 859 | if( !shader ) |
| 860 | { |
| 861 | return false; |
| 862 | } |
| 863 | bool result = false; |
| 864 | auto& desc = shader->GetEffectDescription(); |
| 865 | if( desc.techniques.empty() ) |
| 866 | { |
| 867 | return false; |
| 868 | } |
| 869 | auto& technique = desc.techniques[0]; |
| 870 | for( unsigned i = 0; i < technique.passes.size(); ++i ) |
| 871 | { |
| 872 | auto& stage = technique.passes[i].stageInputs[COMPUTE_SHADER]; |
| 873 | if( stage.m_exists ) |
| 874 | { |
| 875 | shader->ApplyAllStateForPass( 0, i, renderContext ); |
| 876 | effect->ApplyMaterialDataForPass( 0, i, renderContext ); |
| 877 | CR_RETURN_VAL( renderContext.RunComputeShader( groupDimX, groupDimY, groupDimZ ), false ); |
| 878 | result = true; |
| 879 | } |
| 880 | } |
| 881 | return result; |
| 882 | } |
| 883 | |
| 884 | // -------------------------------------------------------------------------------------- |
| 885 | bool Tr2Renderer::RunComputeShader( |
no test coverage detected