mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-11 20:40:20 +00:00
three: Add SphereBufferGeometry, update webgl_custom_attributes test
This commit is contained in:
@@ -8,29 +8,20 @@
|
||||
|
||||
var renderer, scene, camera, stats;
|
||||
|
||||
var sphere, uniforms, attributes;
|
||||
var sphere, uniforms;
|
||||
|
||||
var noise = [];
|
||||
|
||||
var WIDTH = window.innerWidth,
|
||||
HEIGHT = window.innerHeight;
|
||||
var displacement, noise;
|
||||
|
||||
init();
|
||||
animate();
|
||||
|
||||
function init() {
|
||||
|
||||
camera = new THREE.PerspectiveCamera(30, WIDTH / HEIGHT, 1, 10000);
|
||||
camera = new THREE.PerspectiveCamera(30, window.innerWidth / window.innerHeight, 1, 10000);
|
||||
camera.position.z = 300;
|
||||
|
||||
scene = new THREE.Scene();
|
||||
|
||||
attributes = {
|
||||
|
||||
displacement: { type: 'f', value: [] }
|
||||
|
||||
};
|
||||
|
||||
uniforms = {
|
||||
|
||||
amplitude: { type: "f", value: 1.0 },
|
||||
@@ -44,7 +35,6 @@
|
||||
var shaderMaterial = new THREE.ShaderMaterial({
|
||||
|
||||
uniforms: uniforms,
|
||||
attributes: attributes,
|
||||
vertexShader: document.getElementById('vertexshader').textContent,
|
||||
fragmentShader: document.getElementById('fragmentshader').textContent
|
||||
|
||||
@@ -52,27 +42,27 @@
|
||||
|
||||
|
||||
var radius = 50, segments = 128, rings = 64;
|
||||
var geometry = new THREE.SphereGeometry(radius, segments, rings);
|
||||
geometry.dynamic = true;
|
||||
|
||||
sphere = new THREE.Mesh(geometry, shaderMaterial);
|
||||
var geometry = new THREE.SphereBufferGeometry( radius, segments, rings );
|
||||
|
||||
var vertices = sphere.geometry.vertices;
|
||||
var values = attributes.displacement.value;
|
||||
displacement = new Float32Array( geometry.attributes["position"].count );
|
||||
noise = new Float32Array( geometry.attributes["position"].count );
|
||||
|
||||
for (var v = 0; v < vertices.length; v++) {
|
||||
for ( var i = 0; i < displacement.length; i ++ ) {
|
||||
|
||||
values[v] = 0;
|
||||
noise[v] = Math.random() * 5;
|
||||
noise[ i ] = Math.random() * 5;
|
||||
|
||||
}
|
||||
|
||||
geometry.addAttribute( 'displacement', new THREE.BufferAttribute( displacement, 1 ) );
|
||||
|
||||
sphere = new THREE.Mesh(geometry, shaderMaterial);
|
||||
scene.add(sphere);
|
||||
|
||||
renderer = new THREE.WebGLRenderer();
|
||||
renderer.setClearColor(0x050505);
|
||||
renderer.setPixelRatio(window.devicePixelRatio);
|
||||
renderer.setSize(WIDTH, HEIGHT);
|
||||
renderer.setSize(window.innerWidth, window.innerHeight);
|
||||
|
||||
var container = document.getElementById('container');
|
||||
container.appendChild(renderer.domElement);
|
||||
@@ -114,19 +104,19 @@
|
||||
|
||||
uniforms.amplitude.value = 2.5 * Math.sin(sphere.rotation.y * 0.125);
|
||||
uniforms.color.value.offsetHSL(0.0005, 0, 0);
|
||||
|
||||
for (var i = 0; i < attributes.displacement.value.length; i++) {
|
||||
|
||||
attributes.displacement.value[i] = Math.sin(0.1 * i + time);
|
||||
|
||||
noise[i] += 0.5 * (0.5 - Math.random());
|
||||
noise[i] = THREE.Math.clamp(noise[i], -5, 5);
|
||||
|
||||
attributes.displacement.value[i] += noise[i];
|
||||
|
||||
|
||||
for ( var i = 0; i < displacement.length; i ++ ) {
|
||||
|
||||
displacement[ i ] = Math.sin( 0.1 * i + time );
|
||||
|
||||
noise[ i ] += 0.5 * ( 0.5 - Math.random() );
|
||||
noise[ i ] = THREE.Math.clamp( noise[ i ], -5, 5 );
|
||||
|
||||
displacement[ i ] += noise[ i ];
|
||||
|
||||
}
|
||||
|
||||
attributes.displacement.needsUpdate = true;
|
||||
sphere.geometry.attributes.displacement.needsUpdate = true;
|
||||
|
||||
renderer.render(scene, camera);
|
||||
|
||||
|
||||
Vendored
+18
-9
@@ -5618,6 +5618,23 @@ declare module THREE {
|
||||
addShape(shape: Shape, options?: any): void;
|
||||
}
|
||||
|
||||
interface SphereParameters {
|
||||
radius: number;
|
||||
widthSegments: number;
|
||||
heightSegments: number;
|
||||
phiStart: number;
|
||||
phiLength: number;
|
||||
thetaStart: number;
|
||||
thetaLength: number;
|
||||
}
|
||||
|
||||
export class SphereBufferGeometry extends BufferGeometry {
|
||||
constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number);
|
||||
|
||||
parameters: SphereParameters;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* A class for generating sphere geometries
|
||||
*/
|
||||
@@ -5635,15 +5652,7 @@ declare module THREE {
|
||||
*/
|
||||
constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number);
|
||||
|
||||
parameters: {
|
||||
radius: number;
|
||||
widthSegments: number;
|
||||
heightSegments: number;
|
||||
phiStart: number;
|
||||
phiLength: number;
|
||||
thetaStart: number;
|
||||
thetaLength: number;
|
||||
};
|
||||
parameters: SphereParameters;
|
||||
}
|
||||
|
||||
export class TetrahedronGeometry extends PolyhedronGeometry {
|
||||
|
||||
Reference in New Issue
Block a user