|
@@ -329,6 +329,8 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
|
|
|
|
var prefixVertex, prefixFragment;
|
|
var prefixVertex, prefixFragment;
|
|
|
|
|
|
|
|
+ var numMultiviewViews = renderer.multiview.getNumViews();
|
|
|
|
+
|
|
if ( material.isRawShaderMaterial ) {
|
|
if ( material.isRawShaderMaterial ) {
|
|
|
|
|
|
prefixVertex = [
|
|
prefixVertex = [
|
|
@@ -358,8 +360,6 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
|
|
|
|
} else {
|
|
} else {
|
|
|
|
|
|
- var numMultiviewViews = renderer.multiview.getNumViews();
|
|
|
|
-
|
|
|
|
prefixVertex = [
|
|
prefixVertex = [
|
|
|
|
|
|
'precision ' + parameters.precision + ' float;',
|
|
'precision ' + parameters.precision + ' float;',
|
|
@@ -415,7 +415,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
'uniform mat4 modelMatrix;',
|
|
'uniform mat4 modelMatrix;',
|
|
'uniform vec3 cameraPosition;',
|
|
'uniform vec3 cameraPosition;',
|
|
|
|
|
|
- material.supportsMultiview && renderer.multiview.isEnabled() ? [
|
|
|
|
|
|
+ numMultiviewViews > 0 ? [
|
|
'uniform mat4 modelViewMatrices[' + numMultiviewViews + '];',
|
|
'uniform mat4 modelViewMatrices[' + numMultiviewViews + '];',
|
|
'uniform mat3 normalMatrices[' + numMultiviewViews + '];',
|
|
'uniform mat3 normalMatrices[' + numMultiviewViews + '];',
|
|
'uniform mat4 viewMatrices[' + numMultiviewViews + '];',
|
|
'uniform mat4 viewMatrices[' + numMultiviewViews + '];',
|
|
@@ -546,7 +546,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
|
|
|
|
'uniform vec3 cameraPosition;',
|
|
'uniform vec3 cameraPosition;',
|
|
|
|
|
|
- material.supportsMultiview && renderer.multiview.isEnabled() ? [
|
|
|
|
|
|
+ numMultiviewViews > 0 ? [
|
|
|
|
|
|
'uniform mat4 viewMatrices[' + numMultiviewViews + '];',
|
|
'uniform mat4 viewMatrices[' + numMultiviewViews + '];',
|
|
'#define viewMatrix viewMatrices[VIEW_ID]'
|
|
'#define viewMatrix viewMatrices[VIEW_ID]'
|
|
@@ -607,7 +607,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
prefixVertex = [
|
|
prefixVertex = [
|
|
'#version 300 es\n',
|
|
'#version 300 es\n',
|
|
|
|
|
|
- material.supportsMultiview && renderer.multiview.isEnabled() ? [
|
|
|
|
|
|
+ numMultiviewViews > 0 ? [
|
|
|
|
|
|
'#extension GL_OVR_multiview2 : require',
|
|
'#extension GL_OVR_multiview2 : require',
|
|
'layout(num_views = ' + numMultiviewViews + ') in;',
|
|
'layout(num_views = ' + numMultiviewViews + ') in;',
|
|
@@ -622,7 +622,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
|
|
|
|
prefixFragment = [
|
|
prefixFragment = [
|
|
'#version 300 es\n',
|
|
'#version 300 es\n',
|
|
- material.supportsMultiview && renderer.multiview.isEnabled() ? [
|
|
|
|
|
|
+ numMultiviewViews > 0 ? [
|
|
|
|
|
|
'#extension GL_OVR_multiview2 : require',
|
|
'#extension GL_OVR_multiview2 : require',
|
|
'#define VIEW_ID gl_ViewID_OVR'
|
|
'#define VIEW_ID gl_ViewID_OVR'
|
|
@@ -782,6 +782,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
this.program = program;
|
|
this.program = program;
|
|
this.vertexShader = glVertexShader;
|
|
this.vertexShader = glVertexShader;
|
|
this.fragmentShader = glFragmentShader;
|
|
this.fragmentShader = glFragmentShader;
|
|
|
|
+ this.numMultiviewViews = numMultiviewViews;
|
|
|
|
|
|
return this;
|
|
return this;
|
|
|
|
|