Add shader translator support for OVR_multiview
The OVR_multiview and OVR_multiview2 extensions add gl_ViewID_OVR to
shaders. gl_ViewID_OVR can be translated either as is in GLSL output
or as a uniform by setting the SH_TRANSLATE_VIEWID_OVR_AS_UNIFORM
compiler flag.
If WebGL output is selected, the shaders will be validated according
to proposed rules in the WEBGL_multiview spec.
BUG=angleproject:1669
TEST=angle_unittests
Change-Id: I19ea3a6c8b4edb78be03f1a50a96bfef018870d0
Reviewed-on: https://chromium-review.googlesource.com/422848
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/compiler/translator/OutputGLSLBase.cpp b/src/compiler/translator/OutputGLSLBase.cpp
index 379d6d6..839ceb6 100644
--- a/src/compiler/translator/OutputGLSLBase.cpp
+++ b/src/compiler/translator/OutputGLSLBase.cpp
@@ -1279,7 +1279,16 @@
TString TOutputGLSLBase::hashVariableName(const TName &name)
{
if (mSymbolTable.findBuiltIn(name.getString(), mShaderVersion) != NULL)
+ {
+ if (mCompileOptions & SH_TRANSLATE_VIEWID_OVR_TO_UNIFORM &&
+ name.getString() == "gl_ViewID_OVR")
+ {
+ TName uniformName(TString("ViewId_OVR"));
+ uniformName.setInternal(true);
+ return hashName(uniformName);
+ }
return name.getString();
+ }
return hashName(name);
}