diff options
author | Janne Kangas <janne.kangas@qt.io> | 2019-07-26 14:49:10 +0300 |
---|---|---|
committer | Janne Kangas <janne.kangas@qt.io> | 2019-09-30 11:35:54 +0300 |
commit | 2902563f2f97fe18e3a547e72e66ee57d443df4f (patch) | |
tree | 99edb279806189ee3f91b95d6adfb1b4ec2d0b1d /src/render/Qt3DSRenderShaderProgram.cpp | |
parent | d7b5007145a82f9dd855a6417ad6ec9be960e422 (diff) |
Indicate effect shader errors in Editorv2.5.0-beta2
Show a pop-up if a shader fails to compile. Compilation takes place when
the effect is added to a object in timeline.
Requires both editor and runtime commits.
Task-id: QT3DS-3598
Change-Id: Ie9b5a960773c16e00ef99bd0a05e581daf008365
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/render/Qt3DSRenderShaderProgram.cpp')
-rw-r--r-- | src/render/Qt3DSRenderShaderProgram.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/render/Qt3DSRenderShaderProgram.cpp b/src/render/Qt3DSRenderShaderProgram.cpp index cc8c1fd..b5f2a77 100644 --- a/src/render/Qt3DSRenderShaderProgram.cpp +++ b/src/render/Qt3DSRenderShaderProgram.cpp @@ -1115,20 +1115,23 @@ namespace render { if (!vertexValid || !fragValid || !tcValid || !teValid || !geValid || !bProgramIsValid) { NVFoundationBase &foundation(context.GetFoundation()); + const char *err; if (!vertexValid) { qCCritical(INTERNAL_ERROR, "Failed to generate vertex shader!!"); qCCritical(INTERNAL_ERROR, "Vertex source:\n%s", nonNull((const char *)vertShaderSource.begin())); - WriteErrorMessage(foundation, "Vertex compilation output:", - vtxShader.getValue()->GetErrorMessage()); + err = vtxShader.getValue()->GetErrorMessage(); + result.errors.append(err); + WriteErrorMessage(foundation, "Vertex compilation output:", err); } if (!fragValid) { qCCritical(INTERNAL_ERROR, "Failed to generate fragment shader!!"); qCCritical(INTERNAL_ERROR, "Fragment source:\n%s", nonNull((const char *)fragShaderSource.begin())); - WriteErrorMessage(foundation, "Fragment compilation output:", - fragShader.getValue()->GetErrorMessage()); + err = fragShader.getValue()->GetErrorMessage(); + result.errors.append(err); + WriteErrorMessage(foundation, "Fragment compilation output:", err); } if (!tcValid) { @@ -1136,8 +1139,9 @@ namespace render { "Failed to generate tessellation control shader!!"); qCCritical(INTERNAL_ERROR, "Tessellation control source:\n%s", nonNull((const char *)tessControlShaderSource.begin())); - WriteErrorMessage(foundation, "Tessellation control compilation output:", - tcShader.getValue()->GetErrorMessage()); + err = tcShader.getValue()->GetErrorMessage(); + result.errors.append(err); + WriteErrorMessage(foundation, "Tessellation control compilation output:", err); } if (!teValid) { @@ -1145,16 +1149,18 @@ namespace render { "Failed to generate tessellation evaluation shader!!"); qCCritical(INTERNAL_ERROR, "Tessellation evaluation source:\n%s", nonNull((const char *)tessEvaluationShaderSource.begin())); - WriteErrorMessage(foundation, "Tessellation evaluation compilation output:", - teShader.getValue()->GetErrorMessage()); + err = teShader.getValue()->GetErrorMessage(); + result.errors.append(err); + WriteErrorMessage(foundation, "Tessellation evaluation compilation output:", err); } if (!geValid) { qCCritical(INTERNAL_ERROR, "Failed to generate geometry shader!!"); qCCritical(INTERNAL_ERROR, "Geometry source:\n%s", nonNull((const char *)geometryShaderSource.begin())); - WriteErrorMessage(foundation, "Geometry compilation output:", - geShader.getValue()->GetErrorMessage()); + err = geShader.getValue()->GetErrorMessage(); + result.errors.append(err); + WriteErrorMessage(foundation, "Geometry compilation output:", err); } if (!bProgramIsValid && pProgram) { |