| 180 | } |
| 181 | |
| 182 | GPUShaderProgram* GPUShader::GetShader(ShaderStage stage, const StringAnsiView& name, int32 permutationIndex) const |
| 183 | { |
| 184 | GPUShaderProgram* shader = nullptr; |
| 185 | const uint32 hash = HashPermutation(name, permutationIndex); |
| 186 | _shaders.TryGet(hash, shader); |
| 187 | #if BUILD_RELEASE |
| 188 | // Release build is more critical on that |
| 189 | ASSERT(shader != nullptr && shader->GetStage() == stage); |
| 190 | #else |
| 191 | if (shader == nullptr) |
| 192 | { |
| 193 | LOG(Error, "Missing {0} shader \'{1}\'[{2}]. Object: {3}.", ::ToString(stage), String(name), permutationIndex, ToString()); |
| 194 | } |
| 195 | else if (shader->GetStage() != stage) |
| 196 | { |
| 197 | LOG(Error, "Invalid shader stage \'{1}\'[{2}]. Expected: {0}. Actual: {4}. Object: {3}.", ::ToString(stage), String(name), permutationIndex, ToString(), ::ToString(shader->GetStage())); |
| 198 | } |
| 199 | #endif |
| 200 | return shader; |
| 201 | } |
| 202 | |
| 203 | void GPUShader::ReadVertexLayout(MemoryReadStream& stream, GPUVertexLayout*& inputLayout, GPUVertexLayout*& vertexLayout) |
| 204 | { |
no test coverage detected