super-three 0.158.0 → 0.160.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +1719 -379
- package/build/three.js +1719 -379
- package/build/three.min.js +1 -1
- package/build/three.module.js +1718 -380
- package/build/three.module.min.js +1 -1
- package/examples/jsm/Addons.js +2 -1
- package/examples/jsm/controls/OrbitControls.js +50 -40
- package/examples/jsm/csm/CSMShader.js +52 -47
- package/examples/jsm/exporters/GLTFExporter.js +79 -1
- package/examples/jsm/exporters/USDZExporter.js +27 -19
- package/examples/jsm/helpers/TextureHelper.js +237 -0
- package/examples/jsm/interactive/HTMLMesh.js +9 -2
- package/examples/jsm/lines/LineMaterial.js +16 -33
- package/examples/jsm/loaders/ColladaLoader.js +0 -6
- package/examples/jsm/loaders/DRACOLoader.js +4 -3
- package/examples/jsm/loaders/FBXLoader.js +294 -124
- package/examples/jsm/loaders/GLTFLoader.js +71 -3
- package/examples/jsm/loaders/MaterialXLoader.js +73 -54
- package/examples/jsm/loaders/NRRDLoader.js +0 -13
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/USDZLoader.js +3 -17
- package/examples/jsm/math/Octree.js +15 -4
- package/examples/jsm/misc/Timer.js +119 -0
- package/examples/jsm/misc/TubePainter.js +3 -6
- package/examples/jsm/modifiers/CurveModifier.js +20 -2
- package/examples/jsm/nodes/Nodes.js +11 -7
- package/examples/jsm/nodes/accessors/CameraNode.js +18 -2
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +5 -73
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +11 -2
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +12 -3
- package/examples/jsm/nodes/accessors/MorphNode.js +191 -16
- package/examples/jsm/nodes/accessors/ReferenceNode.js +25 -1
- package/examples/jsm/nodes/accessors/TextureNode.js +122 -36
- package/examples/jsm/nodes/code/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/AttributeNode.js +7 -1
- package/examples/jsm/nodes/core/CacheNode.js +4 -1
- package/examples/jsm/nodes/core/ConstNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +6 -3
- package/examples/jsm/nodes/core/NodeBuilder.js +84 -27
- package/examples/jsm/nodes/core/NodeFrame.js +10 -8
- package/examples/jsm/nodes/core/NodeUniform.js +12 -0
- package/examples/jsm/nodes/core/NodeUtils.js +3 -7
- package/examples/jsm/nodes/core/OutputStructNode.js +3 -3
- package/examples/jsm/nodes/core/PropertyNode.js +17 -2
- package/examples/jsm/nodes/core/StructTypeNode.js +4 -4
- package/examples/jsm/nodes/core/UniformGroup.js +13 -0
- package/examples/jsm/nodes/core/UniformGroupNode.js +36 -0
- package/examples/jsm/nodes/core/UniformNode.js +17 -0
- package/examples/jsm/nodes/core/VarNode.js +2 -0
- package/examples/jsm/nodes/core/VaryingNode.js +1 -7
- package/examples/jsm/nodes/display/BumpMapNode.js +1 -1
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +6 -10
- package/examples/jsm/nodes/display/GaussianBlurNode.js +170 -0
- package/examples/jsm/nodes/display/PassNode.js +182 -0
- package/examples/jsm/nodes/display/ViewportDepthNode.js +31 -3
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportNode.js +5 -8
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +52 -17
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -12
- package/examples/jsm/nodes/lighting/LightsNode.js +34 -32
- package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +12 -12
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -0
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/NodeMaterial.js +66 -41
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -10
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +10 -10
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +128 -54
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +1430 -618
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +24 -14
- package/examples/jsm/nodes/math/MathNode.js +2 -0
- package/examples/jsm/nodes/math/OperatorNode.js +19 -6
- package/examples/jsm/nodes/shadernode/ShaderNode.js +32 -3
- package/examples/jsm/nodes/utils/FunctionOverloadingNode.js +95 -0
- package/examples/jsm/nodes/utils/RemapNode.js +2 -2
- package/examples/jsm/nodes/utils/SplitNode.js +8 -2
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/examples/jsm/objects/QuadMesh.js +60 -0
- package/examples/jsm/postprocessing/GTAOPass.js +572 -0
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/renderers/common/Animation.js +10 -21
- package/examples/jsm/renderers/common/Backend.js +19 -3
- package/examples/jsm/renderers/common/Background.js +20 -22
- package/examples/jsm/renderers/common/Bindings.js +30 -21
- package/examples/jsm/renderers/common/ChainMap.js +3 -3
- package/examples/jsm/renderers/common/Color4.js +37 -0
- package/examples/jsm/renderers/common/Geometries.js +4 -4
- package/examples/jsm/renderers/common/Info.js +12 -2
- package/examples/jsm/renderers/common/Pipelines.js +3 -51
- package/examples/jsm/renderers/common/PostProcessing.js +25 -0
- package/examples/jsm/renderers/common/RenderContext.js +1 -1
- package/examples/jsm/renderers/common/RenderContexts.js +1 -1
- package/examples/jsm/renderers/common/RenderObject.js +13 -1
- package/examples/jsm/renderers/common/RenderObjects.js +4 -2
- package/examples/jsm/renderers/common/Renderer.js +137 -37
- package/examples/jsm/renderers/common/StorageTexture.js +1 -0
- package/examples/jsm/renderers/common/Textures.js +4 -1
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +44 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +74 -7
- package/examples/jsm/renderers/webgl/WebGLBackend.js +91 -33
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +100 -31
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +57 -5
- package/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +36 -0
- package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +11 -1
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +71 -2
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +42 -0
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +33 -3
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +4 -14
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +186 -137
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +1 -1
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +209 -90
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +15 -10
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +11 -3
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +2 -3
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +88 -6
- package/examples/jsm/shaders/FXAAShader.js +133 -133
- package/examples/jsm/shaders/GTAOShader.js +424 -0
- package/examples/jsm/shaders/OutputShader.js +4 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +226 -0
- package/examples/jsm/shaders/SAOShader.js +2 -3
- package/examples/jsm/shaders/SSAOShader.js +2 -3
- package/examples/jsm/transpiler/AST.js +40 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +50 -8
- package/examples/jsm/transpiler/ShaderToyDecoder.js +4 -4
- package/examples/jsm/transpiler/TSLEncoder.js +124 -20
- package/examples/jsm/utils/SortUtils.js +158 -0
- package/examples/jsm/utils/TextureUtils.js +33 -21
- package/examples/jsm/webxr/ARButton.js +14 -0
- package/examples/jsm/webxr/VRButton.js +23 -8
- package/examples/jsm/webxr/XRButton.js +25 -11
- package/package.json +5 -6
- package/src/Three.js +1 -0
- package/src/constants.js +2 -1
- package/src/core/BufferAttribute.js +21 -2
- package/src/core/InterleavedBuffer.js +21 -1
- package/src/core/Object3D.js +60 -12
- package/src/core/UniformsGroup.js +7 -1
- package/src/extras/curves/LineCurve3.js +4 -0
- package/src/loaders/AudioLoader.js +1 -1
- package/src/loaders/BufferGeometryLoader.js +0 -7
- package/src/loaders/ImageBitmapLoader.js +25 -1
- package/src/loaders/ObjectLoader.js +49 -0
- package/src/materials/ShaderMaterial.js +2 -1
- package/src/math/ColorManagement.js +0 -16
- package/src/math/Quaternion.js +5 -4
- package/src/math/Sphere.js +2 -0
- package/src/math/Triangle.js +17 -5
- package/src/objects/BatchedMesh.js +1020 -0
- package/src/objects/Skeleton.js +1 -3
- package/src/renderers/WebGL3DRenderTarget.js +2 -2
- package/src/renderers/WebGLArrayRenderTarget.js +2 -2
- package/src/renderers/WebGLRenderer.js +23 -18
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +19 -0
- package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -5
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +31 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +9 -4
- package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +9 -17
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +84 -0
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk.js +4 -0
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +3 -0
- package/src/renderers/webgl/WebGLAttributes.js +39 -5
- package/src/renderers/webgl/WebGLBufferRenderer.js +31 -0
- package/src/renderers/webgl/WebGLCubeMaps.js +1 -1
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +31 -0
- package/src/renderers/webgl/WebGLLights.js +11 -2
- package/src/renderers/webgl/WebGLProgram.js +20 -1
- package/src/renderers/webgl/WebGLPrograms.js +5 -0
- package/src/renderers/webgl/WebGLShadowMap.js +35 -0
- package/src/renderers/webgl/WebGLTextures.js +7 -11
- package/src/renderers/webgl/WebGLUniforms.js +11 -1
- package/src/renderers/webgl/WebGLUniformsGroups.js +72 -93
- package/src/renderers/webxr/WebXRManager.js +16 -0
- package/examples/jsm/objects/BatchedMesh.js +0 -586
|
@@ -96,57 +96,62 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
|
96
96
|
|
|
97
97
|
for ( let i = 0, il = uniforms.length; i < il; i ++ ) {
|
|
98
98
|
|
|
99
|
-
const
|
|
99
|
+
const uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
for ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
const uniform = uniformArray[ j ];
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
if ( hasUniformChanged( uniform, i, j, cache ) === true ) {
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
const offset = uniform.__offset;
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
const values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
let arrayOffset = 0;
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
for ( let k = 0; k < values.length; k ++ ) {
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
const value = values[ k ];
|
|
116
|
+
|
|
117
|
+
const info = getUniformSize( value );
|
|
118
|
+
|
|
119
|
+
// TODO add integer and struct support
|
|
120
|
+
if ( typeof value === 'number' || typeof value === 'boolean' ) {
|
|
116
121
|
|
|
117
|
-
|
|
122
|
+
uniform.__data[ 0 ] = value;
|
|
123
|
+
gl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );
|
|
118
124
|
|
|
119
|
-
|
|
120
|
-
gl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );
|
|
125
|
+
} else if ( value.isMatrix3 ) {
|
|
121
126
|
|
|
122
|
-
|
|
127
|
+
// manually converting 3x3 to 3x4
|
|
123
128
|
|
|
124
|
-
|
|
129
|
+
uniform.__data[ 0 ] = value.elements[ 0 ];
|
|
130
|
+
uniform.__data[ 1 ] = value.elements[ 1 ];
|
|
131
|
+
uniform.__data[ 2 ] = value.elements[ 2 ];
|
|
132
|
+
uniform.__data[ 3 ] = 0;
|
|
133
|
+
uniform.__data[ 4 ] = value.elements[ 3 ];
|
|
134
|
+
uniform.__data[ 5 ] = value.elements[ 4 ];
|
|
135
|
+
uniform.__data[ 6 ] = value.elements[ 5 ];
|
|
136
|
+
uniform.__data[ 7 ] = 0;
|
|
137
|
+
uniform.__data[ 8 ] = value.elements[ 6 ];
|
|
138
|
+
uniform.__data[ 9 ] = value.elements[ 7 ];
|
|
139
|
+
uniform.__data[ 10 ] = value.elements[ 8 ];
|
|
140
|
+
uniform.__data[ 11 ] = 0;
|
|
125
141
|
|
|
126
|
-
|
|
127
|
-
uniform.__data[ 1 ] = value.elements[ 1 ];
|
|
128
|
-
uniform.__data[ 2 ] = value.elements[ 2 ];
|
|
129
|
-
uniform.__data[ 3 ] = value.elements[ 0 ];
|
|
130
|
-
uniform.__data[ 4 ] = value.elements[ 3 ];
|
|
131
|
-
uniform.__data[ 5 ] = value.elements[ 4 ];
|
|
132
|
-
uniform.__data[ 6 ] = value.elements[ 5 ];
|
|
133
|
-
uniform.__data[ 7 ] = value.elements[ 0 ];
|
|
134
|
-
uniform.__data[ 8 ] = value.elements[ 6 ];
|
|
135
|
-
uniform.__data[ 9 ] = value.elements[ 7 ];
|
|
136
|
-
uniform.__data[ 10 ] = value.elements[ 8 ];
|
|
137
|
-
uniform.__data[ 11 ] = value.elements[ 0 ];
|
|
142
|
+
} else {
|
|
138
143
|
|
|
139
|
-
|
|
144
|
+
value.toArray( uniform.__data, arrayOffset );
|
|
140
145
|
|
|
141
|
-
|
|
146
|
+
arrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;
|
|
142
147
|
|
|
143
|
-
|
|
148
|
+
}
|
|
144
149
|
|
|
145
150
|
}
|
|
146
151
|
|
|
147
|
-
|
|
152
|
+
gl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );
|
|
148
153
|
|
|
149
|
-
|
|
154
|
+
}
|
|
150
155
|
|
|
151
156
|
}
|
|
152
157
|
|
|
@@ -156,31 +161,22 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
|
156
161
|
|
|
157
162
|
}
|
|
158
163
|
|
|
159
|
-
function hasUniformChanged( uniform, index, cache ) {
|
|
164
|
+
function hasUniformChanged( uniform, index, indexArray, cache ) {
|
|
160
165
|
|
|
161
166
|
const value = uniform.value;
|
|
167
|
+
const indexString = index + '_' + indexArray;
|
|
162
168
|
|
|
163
|
-
if ( cache[
|
|
169
|
+
if ( cache[ indexString ] === undefined ) {
|
|
164
170
|
|
|
165
171
|
// cache entry does not exist so far
|
|
166
172
|
|
|
167
|
-
if ( typeof value === 'number' ) {
|
|
173
|
+
if ( typeof value === 'number' || typeof value === 'boolean' ) {
|
|
168
174
|
|
|
169
|
-
cache[
|
|
175
|
+
cache[ indexString ] = value;
|
|
170
176
|
|
|
171
177
|
} else {
|
|
172
178
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const tempValues = [];
|
|
176
|
-
|
|
177
|
-
for ( let i = 0; i < values.length; i ++ ) {
|
|
178
|
-
|
|
179
|
-
tempValues.push( values[ i ].clone() );
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
cache[ index ] = tempValues;
|
|
179
|
+
cache[ indexString ] = value.clone();
|
|
184
180
|
|
|
185
181
|
}
|
|
186
182
|
|
|
@@ -188,32 +184,25 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
|
188
184
|
|
|
189
185
|
} else {
|
|
190
186
|
|
|
187
|
+
const cachedObject = cache[ indexString ];
|
|
188
|
+
|
|
191
189
|
// compare current value with cached entry
|
|
192
190
|
|
|
193
|
-
if ( typeof value === 'number' ) {
|
|
191
|
+
if ( typeof value === 'number' || typeof value === 'boolean' ) {
|
|
194
192
|
|
|
195
|
-
if (
|
|
193
|
+
if ( cachedObject !== value ) {
|
|
196
194
|
|
|
197
|
-
cache[
|
|
195
|
+
cache[ indexString ] = value;
|
|
198
196
|
return true;
|
|
199
197
|
|
|
200
198
|
}
|
|
201
199
|
|
|
202
200
|
} else {
|
|
203
201
|
|
|
204
|
-
|
|
205
|
-
const values = Array.isArray( value ) ? value : [ value ];
|
|
206
|
-
|
|
207
|
-
for ( let i = 0; i < cachedObjects.length; i ++ ) {
|
|
202
|
+
if ( cachedObject.equals( value ) === false ) {
|
|
208
203
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
if ( cachedObject.equals( values[ i ] ) === false ) {
|
|
212
|
-
|
|
213
|
-
cachedObject.copy( values[ i ] );
|
|
214
|
-
return true;
|
|
215
|
-
|
|
216
|
-
}
|
|
204
|
+
cachedObject.copy( value );
|
|
205
|
+
return true;
|
|
217
206
|
|
|
218
207
|
}
|
|
219
208
|
|
|
@@ -234,63 +223,53 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
|
234
223
|
|
|
235
224
|
let offset = 0; // global buffer offset in bytes
|
|
236
225
|
const chunkSize = 16; // size of a chunk in bytes
|
|
237
|
-
let chunkOffset = 0; // offset within a single chunk in bytes
|
|
238
226
|
|
|
239
227
|
for ( let i = 0, l = uniforms.length; i < l; i ++ ) {
|
|
240
228
|
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
const infos = {
|
|
244
|
-
boundary: 0, // bytes
|
|
245
|
-
storage: 0 // bytes
|
|
246
|
-
};
|
|
247
|
-
|
|
248
|
-
const values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];
|
|
229
|
+
const uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];
|
|
249
230
|
|
|
250
|
-
for ( let j = 0, jl =
|
|
231
|
+
for ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {
|
|
251
232
|
|
|
252
|
-
const
|
|
233
|
+
const uniform = uniformArray[ j ];
|
|
253
234
|
|
|
254
|
-
const
|
|
235
|
+
const values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];
|
|
255
236
|
|
|
256
|
-
|
|
257
|
-
infos.storage += info.storage;
|
|
237
|
+
for ( let k = 0, kl = values.length; k < kl; k ++ ) {
|
|
258
238
|
|
|
259
|
-
|
|
239
|
+
const value = values[ k ];
|
|
260
240
|
|
|
261
|
-
|
|
241
|
+
const info = getUniformSize( value );
|
|
262
242
|
|
|
263
|
-
|
|
264
|
-
|
|
243
|
+
// Calculate the chunk offset
|
|
244
|
+
const chunkOffsetUniform = offset % chunkSize;
|
|
265
245
|
|
|
266
|
-
|
|
246
|
+
// Check for chunk overflow
|
|
247
|
+
if ( chunkOffsetUniform !== 0 && ( chunkSize - chunkOffsetUniform ) < info.boundary ) {
|
|
267
248
|
|
|
268
|
-
|
|
249
|
+
// Add padding and adjust offset
|
|
250
|
+
offset += ( chunkSize - chunkOffsetUniform );
|
|
269
251
|
|
|
270
|
-
|
|
252
|
+
}
|
|
271
253
|
|
|
272
|
-
|
|
254
|
+
// the following two properties will be used for partial buffer updates
|
|
273
255
|
|
|
274
|
-
|
|
256
|
+
uniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );
|
|
257
|
+
uniform.__offset = offset;
|
|
275
258
|
|
|
276
|
-
if ( chunkOffset !== 0 && ( remainingSizeInChunk - infos.boundary ) < 0 ) {
|
|
277
259
|
|
|
278
|
-
//
|
|
260
|
+
// Update the global offset
|
|
261
|
+
offset += info.storage;
|
|
279
262
|
|
|
280
|
-
offset += ( chunkSize - chunkOffset );
|
|
281
|
-
uniform.__offset = offset;
|
|
282
263
|
|
|
283
264
|
}
|
|
284
265
|
|
|
285
266
|
}
|
|
286
267
|
|
|
287
|
-
offset += infos.storage;
|
|
288
|
-
|
|
289
268
|
}
|
|
290
269
|
|
|
291
270
|
// ensure correct final padding
|
|
292
271
|
|
|
293
|
-
chunkOffset = offset % chunkSize;
|
|
272
|
+
const chunkOffset = offset % chunkSize;
|
|
294
273
|
|
|
295
274
|
if ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );
|
|
296
275
|
|
|
@@ -312,9 +291,9 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
|
312
291
|
|
|
313
292
|
// determine sizes according to STD140
|
|
314
293
|
|
|
315
|
-
if ( typeof value === 'number' ) {
|
|
294
|
+
if ( typeof value === 'number' || typeof value === 'boolean' ) {
|
|
316
295
|
|
|
317
|
-
// float/int
|
|
296
|
+
// float/int/bool
|
|
318
297
|
|
|
319
298
|
info.boundary = 4;
|
|
320
299
|
info.storage = 4;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ArrayCamera } from '../../cameras/ArrayCamera.js';
|
|
2
2
|
import { EventDispatcher } from '../../core/EventDispatcher.js';
|
|
3
3
|
import { PerspectiveCamera } from '../../cameras/PerspectiveCamera.js';
|
|
4
|
+
import { Vector2 } from '../../math/Vector2.js';
|
|
4
5
|
import { Vector3 } from '../../math/Vector3.js';
|
|
5
6
|
import { Vector4 } from '../../math/Vector4.js';
|
|
6
7
|
import { RAD2DEG } from '../../math/MathUtils.js';
|
|
@@ -44,6 +45,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
44
45
|
const controllers = [];
|
|
45
46
|
const controllerInputSources = [];
|
|
46
47
|
|
|
48
|
+
const currentSize = new Vector2();
|
|
49
|
+
let currentPixelRatio = null;
|
|
50
|
+
|
|
47
51
|
//
|
|
48
52
|
|
|
49
53
|
const cameraL = new PerspectiveCamera();
|
|
@@ -187,6 +191,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
187
191
|
|
|
188
192
|
scope.isPresenting = false;
|
|
189
193
|
|
|
194
|
+
renderer.setPixelRatio( currentPixelRatio );
|
|
195
|
+
renderer.setSize( currentSize.width, currentSize.height, false );
|
|
196
|
+
|
|
190
197
|
scope.dispatchEvent( { type: 'sessionend' } );
|
|
191
198
|
|
|
192
199
|
}
|
|
@@ -274,6 +281,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
274
281
|
|
|
275
282
|
}
|
|
276
283
|
|
|
284
|
+
currentPixelRatio = renderer.getPixelRatio();
|
|
285
|
+
renderer.getSize( currentSize );
|
|
286
|
+
|
|
277
287
|
if ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {
|
|
278
288
|
|
|
279
289
|
const layerInit = {
|
|
@@ -288,6 +298,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
288
298
|
|
|
289
299
|
session.updateRenderState( { baseLayer: glBaseLayer } );
|
|
290
300
|
|
|
301
|
+
renderer.setPixelRatio( 1 );
|
|
302
|
+
renderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );
|
|
303
|
+
|
|
291
304
|
newRenderTarget = new WebGLRenderTarget(
|
|
292
305
|
glBaseLayer.framebufferWidth,
|
|
293
306
|
glBaseLayer.framebufferHeight,
|
|
@@ -333,6 +346,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
333
346
|
|
|
334
347
|
session.updateRenderState( { layers: [ glProjLayer ] } );
|
|
335
348
|
|
|
349
|
+
renderer.setPixelRatio( 1 );
|
|
350
|
+
renderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );
|
|
351
|
+
|
|
336
352
|
const renderTargetOptions = {
|
|
337
353
|
format: RGBAFormat,
|
|
338
354
|
type: UnsignedByteType,
|