|
@@ -11,12 +11,12 @@
|
|
<div id="info"><a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> WebGL 2 - buffergeometry - attributes - none</div>
|
|
<div id="info"><a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> WebGL 2 - buffergeometry - attributes - none</div>
|
|
|
|
|
|
<script id="vertexShader" type="x-shader/x-vertex">
|
|
<script id="vertexShader" type="x-shader/x-vertex">
|
|
-
|
|
|
|
|
|
+
|
|
uniform mat4 modelViewMatrix;
|
|
uniform mat4 modelViewMatrix;
|
|
uniform mat4 projectionMatrix;
|
|
uniform mat4 projectionMatrix;
|
|
-
|
|
|
|
|
|
+
|
|
uniform float seed;
|
|
uniform float seed;
|
|
-
|
|
|
|
|
|
+
|
|
const uint ieeeMantissa = 0x007FFFFFu;
|
|
const uint ieeeMantissa = 0x007FFFFFu;
|
|
const uint ieeeOne = 0x3F800000u;
|
|
const uint ieeeOne = 0x3F800000u;
|
|
|
|
|
|
@@ -28,22 +28,22 @@
|
|
x += ( x << 15u );
|
|
x += ( x << 15u );
|
|
return x;
|
|
return x;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
uint hash(uvec2 v) { return hash( v.x ^ hash(v.y) ); }
|
|
uint hash(uvec2 v) { return hash( v.x ^ hash(v.y) ); }
|
|
-
|
|
|
|
|
|
+
|
|
float hashNoise(vec2 xy) {
|
|
float hashNoise(vec2 xy) {
|
|
- uint m = hash(floatBitsToUint(xy));
|
|
|
|
-
|
|
|
|
|
|
+ uint m = hash(floatBitsToUint(xy));
|
|
|
|
+
|
|
m &= ieeeMantissa;
|
|
m &= ieeeMantissa;
|
|
m |= ieeeOne;
|
|
m |= ieeeOne;
|
|
-
|
|
|
|
|
|
+
|
|
return uintBitsToFloat( m ) - 1.0;
|
|
return uintBitsToFloat( m ) - 1.0;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
float pseudoRandom(float lower, float delta, in vec2 xy) {
|
|
float pseudoRandom(float lower, float delta, in vec2 xy) {
|
|
return lower + delta*hashNoise(xy);
|
|
return lower + delta*hashNoise(xy);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
vec3 pseudoRandomVec3(float lower, float upper, int index) {
|
|
vec3 pseudoRandomVec3(float lower, float upper, int index) {
|
|
float delta = upper - lower;
|
|
float delta = upper - lower;
|
|
float x = pseudoRandom(lower, delta, vec2(index, 0));
|
|
float x = pseudoRandom(lower, delta, vec2(index, 0));
|
|
@@ -51,7 +51,7 @@
|
|
float z = pseudoRandom(lower, delta, vec2(index, 2));
|
|
float z = pseudoRandom(lower, delta, vec2(index, 2));
|
|
return vec3(x, y, z);
|
|
return vec3(x, y, z);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
out vec3 vColor;
|
|
out vec3 vColor;
|
|
|
|
|
|
void main() {
|
|
void main() {
|
|
@@ -66,11 +66,11 @@
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<script id="fragmentShader" type="x-shader/x-fragment">
|
|
<script id="fragmentShader" type="x-shader/x-fragment">
|
|
-
|
|
|
|
|
|
+
|
|
precision mediump float;
|
|
precision mediump float;
|
|
|
|
|
|
in vec3 vColor;
|
|
in vec3 vColor;
|
|
-
|
|
|
|
|
|
+
|
|
out vec4 fColor;
|
|
out vec4 fColor;
|
|
|
|
|
|
void main() {
|
|
void main() {
|
|
@@ -82,7 +82,7 @@
|
|
|
|
|
|
<!-- Import maps polyfill -->
|
|
<!-- Import maps polyfill -->
|
|
<!-- Remove this when import maps will be widely supported -->
|
|
<!-- Remove this when import maps will be widely supported -->
|
|
- <script async src="https://unpkg.com/es-module-shims@1.3.6/dist/es-module-shims.js"></script>
|
|
|
|
|
|
+ <script async src="https://unpkg.com/[email protected].3/dist/es-module-shims.js"></script>
|
|
|
|
|
|
<script type="importmap">
|
|
<script type="importmap">
|
|
{
|
|
{
|
|
@@ -161,7 +161,7 @@
|
|
|
|
|
|
mesh.rotation.x = time / 1000.0 * 0.25;
|
|
mesh.rotation.x = time / 1000.0 * 0.25;
|
|
mesh.rotation.y = time / 1000.0 * 0.50;
|
|
mesh.rotation.y = time / 1000.0 * 0.50;
|
|
-
|
|
|
|
|
|
+
|
|
renderer.render( scene, camera );
|
|
renderer.render( scene, camera );
|
|
|
|
|
|
}
|
|
}
|