New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

g3d

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

g3d - npm Package Compare versions

Comparing version 0.2.2 to 0.2.3

src/core/G3D.ElementBuffer.ts

2

package.json
{
"name": "g3d",
"version": "0.2.2",
"version": "0.2.3",
"description": "webgl render engine compatible with both browser and gcanvas",

@@ -5,0 +5,0 @@ "main": "dist/g3d.min.js",

import GL from './G3D.GL';
import { IWebGLEnum } from '../types/webgl';
import { IWebGLBuffer } from '../types/webgl';
interface IBufferConfig {
data: Float32Array | Uint32Array,
target: string | number
data: Float32Array | ArrayBuffer
}

@@ -11,18 +10,23 @@

glBuffer;
arrayBuffer: ArrayBuffer;
glBuffer: IWebGLBuffer;
constructor({ data, target }: IBufferConfig) {
constructor({ data }: IBufferConfig) {
const { gl, buffers } = GL;
if (typeof target === 'string') {
target = gl[target];
// create this.glBuffer
this.glBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, this.glBuffer);
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
gl.bindBuffer(gl.ARRAY_BUFFER, null);
// create this.arrayBuffer
if (data instanceof Float32Array) {
this.arrayBuffer = data.buffer;
} else if (data instanceof ArrayBuffer) {
this.arrayBuffer = data;
}
const glBuffer = this.glBuffer = gl.createBuffer();
gl.bindBuffer(target as IWebGLEnum, glBuffer);
gl.bufferData(target as IWebGLEnum, data, gl.STATIC_DRAW);
gl.bindBuffer(target as IWebGLEnum, null);
// hook on GL
buffers.push(this);

@@ -32,5 +36,3 @@ }

destructor(): void {
const { gl } = GL;
gl.deleteBuffer(this.glBuffer);

@@ -37,0 +39,0 @@ }

@@ -5,4 +5,4 @@ import Buffer from "./G3D.Buffer";

buffer: Buffer;
stride?: number;
offset?: number;
byteStride?: number;
byteOffset?: number;
}

@@ -13,11 +13,11 @@

buffer: Buffer;
stride: number;
offset: number;
readonly buffer: Buffer;
readonly byteStride: number;
readonly byteOffset: number;
constructor({ buffer, stride = 0, offset = 0 }: IBufferViewConfig) {
constructor({ buffer, byteStride = 0, byteOffset = 0 }: IBufferViewConfig) {
this.buffer = buffer;
this.stride = stride;
this.offset = offset;
this.byteStride = byteStride;
this.byteOffset = byteOffset;
}

@@ -24,0 +24,0 @@

import GL from './G3D.GL';
import ElementBuffer from './G3D.ElementBuffer';
import Buffer from './G3D.Buffer';
interface IElementBufferViewConfig {
buffer: Buffer;
buffer: ElementBuffer;
mode?: string | number;
count?: number;
type?: string | number;
offset?: number;
byteOffset?: number;
}

@@ -15,9 +14,9 @@

buffer: Buffer;
mode: number;
count: number;
type: number;
offset: number;
readonly buffer: ElementBuffer;
readonly mode: number;
readonly count: number;
readonly type: number;
readonly byteOffset: number;
constructor({ buffer, mode = 'TRIANGLES', count = 0, type = 'UNSIGNED_INT', offset = 0 }: IElementBufferViewConfig) {
constructor({ buffer, mode = 'TRIANGLES', count = 0, type = 'UNSIGNED_INT', byteOffset = 0 }: IElementBufferViewConfig) {

@@ -39,3 +38,3 @@ const { gl } = GL;

this.type = type;
this.offset = offset;
this.byteOffset = byteOffset;
}

@@ -42,0 +41,0 @@

@@ -8,2 +8,3 @@ import Scene from './scene/G3D.Scene';

import BufferView from './core/G3D.BufferView';
import ElementBuffer from './core/G3D.ElementBuffer';
import ElementBufferView from './core/G3D.ElementBufferView';

@@ -53,2 +54,3 @@ import Texture from './texture/G3D.Texture';

BufferView,
ElementBuffer,
ElementBufferView,

@@ -55,0 +57,0 @@ Texture,

import Buffer from '../core/G3D.Buffer';
import BufferView from "../core/G3D.BufferView";
import ElementBufferView from "../core/G3D.ElementBufferView";
import ElementBuffer from '../core/G3D.ElementBuffer';
import GL from '../core/G3D.GL';

@@ -20,2 +22,44 @@ interface IGeometryBufferViews {

getBoundingBox() {
let [minX, maxX, minY, maxY, minZ, maxZ] = [undefined, undefined, undefined, undefined, undefined, undefined];
const compare = (x, y, z) => {
if (minX === undefined) { [minX, maxX, minY, maxY, minZ, maxZ] = [x, x, y, y, z, z]; }
if (x < minX) { minX = x; }
if (x > maxX) { maxX = x; }
if (y < minY) { minY = y; }
if (y > maxY) { maxY = y; }
if (z < minZ) { minZ = z; }
if (z > maxZ) { maxZ = z; }
}
const { gl } = GL;
const { indices, vertices } = this.bufferViews;
const verticesOffset = vertices.byteOffset / 4;
const verticesStride = vertices.byteStride === 0 ? 3 : vertices.byteStride / 4;
for (let key in indices) {
const eleBufferView = indices[key];
const { count } = eleBufferView;
const indexBytes = eleBufferView.type === gl.UNSIGNED_INT ? 4 : 2;
const indexOffset = eleBufferView.byteOffset / indexBytes;
const indexArray = eleBufferView.type === gl.UNSIGNED_INT ?
new Uint32Array(eleBufferView.buffer.arrayBuffer) :
new Uint16Array(eleBufferView.buffer.arrayBuffer);
const verticeArray = new Float32Array(vertices.buffer.arrayBuffer);
for (let i = 0; i < count; i++) {
const j = indexArray[i + indexOffset] * verticesStride + verticesOffset;
compare(verticeArray[j], verticeArray[j + 1], verticeArray[j + 2]);
}
}
return [minX, maxX, minY, maxY, minZ, maxZ];
}
protected createBufferView(data: number[] | BufferView | { [propName: string]: number[] | BufferView }): BufferView | { [propName: string]: BufferView } {

@@ -27,4 +71,3 @@

buffer: new Buffer({
data: new Float32Array(data),
target: 'ARRAY_BUFFER'
data: new Float32Array(data)
})

@@ -48,3 +91,3 @@ });

protected createELementBufferView(data: { [propName: string]: number[] | ElementBufferView }, line: boolean = false): { [propName: string]: ElementBufferView } {
protected createElementBufferView(data: { [propName: string]: number[] | ElementBufferView }, line: boolean = false): { [propName: string]: ElementBufferView } {

@@ -56,5 +99,4 @@ const elementBufferViews = {};

elementBufferViews[key] = Array.isArray(data[key]) ? new ElementBufferView({
buffer: new Buffer({
data: new Uint32Array(data[key] as number[]),
target: 'ELEMENT_ARRAY_BUFFER'
buffer: new ElementBuffer({
data: new Uint32Array(data[key] as number[])
}),

@@ -64,3 +106,3 @@ mode: line ? 'LINES' : 'TRIANGLES',

type: 'UNSIGNED_INT',
offset: 0
byteOffset: 0
}) : data[key];

@@ -67,0 +109,0 @@

@@ -47,3 +47,3 @@ import Buffer from '../core/G3D.Buffer';

uvs: uvs ? this.createBufferView(uvs) : null,
indices: this.createELementBufferView(indices)
indices: this.createElementBufferView(indices)
}

@@ -50,0 +50,0 @@ }

@@ -31,3 +31,3 @@ import BufferView from '../core/G3D.BufferView';

uvs: this.createBufferView(uvs),
indices: this.createELementBufferView(indices, true),
indices: this.createElementBufferView(indices, true),
}

@@ -34,0 +34,0 @@

@@ -12,2 +12,4 @@ import PBREnviroment from '../../../material/G3D.PBREnviroment';

import Geometry from '../../../geometry/G3D.Geometry';
import GL from '../../../core/G3D.GL';
import ElementBuffer from '../../../core/G3D.ElementBuffer';

@@ -19,2 +21,4 @@ const Mat4: any = Mat4_2;

const { gl } = GL;
const pbrEnv = new PBREnviroment({ diffuse, specular, brdfLUT: lut });

@@ -26,7 +30,11 @@

return new Buffer({
data: data.slice(bv.byteOffset, bv.byteOffset + bv.byteLength),
target: bv.target
});
if (bv.target === gl.ELEMENT_ARRAY_BUFFER) {
return new ElementBuffer({
data: data.slice(bv.byteOffset, bv.byteOffset + bv.byteLength)
});
} else {
return new Buffer({
data: data.slice(bv.byteOffset, bv.byteOffset + bv.byteLength)
});
}
});

@@ -93,3 +101,2 @@

if (emissiveTexture) {

@@ -157,4 +164,4 @@ material.emissiveTexture = gTextureCreators[emissiveTexture.index](true);

buffer: gBuffers[accessor.bufferView],
stride: accessor.byteStride || 0,
offset: accessor.byteOffset || 0,
byteStride: accessor.byteStride || 0,
byteOffset: accessor.byteOffset || 0,
});

@@ -170,3 +177,3 @@

buffer: gBuffers[accessor.bufferView],
offset: accessor.byteOffset || 0,
byteOffset: accessor.byteOffset || 0,
count: accessor.count,

@@ -173,0 +180,0 @@ mode: 'TRIANGLES',

@@ -374,9 +374,9 @@ import Env from '../core/G3D.Env';

engine.attribute('aPosition', vertices.buffer.glBuffer, vertices.stride, vertices.offset);
engine.attribute('aPosition', vertices.buffer.glBuffer, vertices.byteStride, vertices.byteOffset);
if (uvs) {
if (typeof uvs.stride === 'number') {
if (typeof uvs.byteStride === 'number') {
engine.attribute('aUV', uvs.buffer.glBuffer, uvs.stride, uvs.offset);
engine.attribute('aUV', uvs.buffer.glBuffer, uvs.byteStride, uvs.byteOffset);

@@ -386,4 +386,5 @@ } else {

Object.keys(uvs).forEach(key => {
engine.attribute(key, uvs[key].buffer.glBuffer, uvs[key].stride, uvs[key].offset);
engine.attribute(key, uvs[key].buffer.glBuffer, uvs[key].byteStride, uvs[key].byteOffset);
})
}

@@ -393,3 +394,3 @@ }

if (normals) {
engine.attribute('aNormal', normals.buffer.glBuffer, normals.stride, normals.offset);
engine.attribute('aNormal', normals.buffer.glBuffer, normals.byteStride, normals.byteOffset);
}

@@ -520,3 +521,3 @@

engine.draw(indices[key].mode, indices[key].count, indices[key].type, indices[key].offset);
engine.draw(indices[key].mode, indices[key].count, indices[key].type, indices[key].byteOffset);
}

@@ -540,3 +541,3 @@ }

engine.attribute('aPosition', vertices.buffer.glBuffer, vertices.stride, vertices.offset);
engine.attribute('aPosition', vertices.buffer.glBuffer, vertices.byteStride, vertices.byteOffset);

@@ -549,3 +550,3 @@ engine.uniform('uVMatrix', camera.getVMatrix());

engine.elements(indices[key].buffer.glBuffer);
engine.draw(indices[key].mode, indices[key].count, indices[key].type, indices[key].offset);
engine.draw(indices[key].mode, indices[key].count, indices[key].type, indices[key].byteOffset);
}

@@ -552,0 +553,0 @@ }

@@ -94,2 +94,4 @@ export interface ICanvas {

readonly STATIC_DRAW: IWebGLEnum;
readonly UNSIGNED_INT: IWebGLEnum;
readonly UNSIGNED_SHORT: IWebGLEnum;

@@ -149,3 +151,3 @@ getExtension(name: string): any;

createBuffer(): IWebGLBuffer;
bufferData(target: IWebGLEnum, data: Float32Array | Uint32Array, usage: IWebGLEnum): void;
bufferData(target: IWebGLEnum, data: Float32Array | Uint32Array | Uint16Array | ArrayBuffer, usage: IWebGLEnum): void;
deleteBuffer(buffer: IWebGLBuffer): void;

@@ -152,0 +154,0 @@

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc