pixospritz-core 0.10.1 → 1.0.1
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/README.md +36 -286
- package/dist/bundle.js +13 -3
- package/dist/bundle.js.map +1 -1
- package/dist/style.css +1 -0
- package/package.json +43 -44
- package/src/components/WebGLView.jsx +318 -0
- package/src/css/pixos.css +372 -0
- package/src/engine/actions/animate.js +41 -0
- package/src/engine/actions/changezone.js +135 -0
- package/src/engine/actions/chat.js +109 -0
- package/src/engine/actions/dialogue.js +90 -0
- package/src/engine/actions/face.js +22 -0
- package/src/engine/actions/greeting.js +28 -0
- package/src/engine/actions/interact.js +86 -0
- package/src/engine/actions/move.js +67 -0
- package/src/engine/actions/patrol.js +109 -0
- package/src/engine/actions/prompt.js +185 -0
- package/src/engine/actions/script.js +42 -0
- package/src/engine/core/audio/AudioSystem.js +543 -0
- package/src/engine/core/cutscene/PxcPlayer.js +956 -0
- package/src/engine/core/cutscene/manager.js +243 -0
- package/src/engine/core/database/index.js +75 -0
- package/src/engine/core/debug/index.js +371 -0
- package/src/engine/core/hud/index.js +765 -0
- package/src/engine/core/index.js +540 -0
- package/src/engine/core/input/gamepad/Controller.js +71 -0
- package/src/engine/core/input/gamepad/ControllerButtons.js +231 -0
- package/src/engine/core/input/gamepad/ControllerStick.js +173 -0
- package/src/engine/core/input/gamepad/index.js +592 -0
- package/src/engine/core/input/keyboard.js +196 -0
- package/src/engine/core/input/manager.js +485 -0
- package/src/engine/core/input/mouse.js +203 -0
- package/src/engine/core/input/touch.js +175 -0
- package/src/engine/core/mode/manager.js +199 -0
- package/src/engine/core/net/manager.js +535 -0
- package/src/engine/core/queue/action.js +83 -0
- package/src/engine/core/queue/event.js +82 -0
- package/src/engine/core/queue/index.js +44 -0
- package/src/engine/core/queue/loadable.js +33 -0
- package/src/engine/core/render/CameraEffects.js +494 -0
- package/src/engine/core/render/FrustumCuller.js +417 -0
- package/src/engine/core/render/LODManager.js +285 -0
- package/src/engine/core/render/ParticleManager.js +529 -0
- package/src/engine/core/render/TextureAtlas.js +465 -0
- package/src/engine/core/render/camera.js +338 -0
- package/src/engine/core/render/light.js +197 -0
- package/src/engine/core/render/manager.js +1079 -0
- package/src/engine/core/render/shaders.js +110 -0
- package/src/engine/core/render/skybox.js +342 -0
- package/src/engine/core/resource/manager.js +133 -0
- package/src/engine/core/resource/object.js +611 -0
- package/src/engine/core/resource/texture.js +103 -0
- package/src/engine/core/resource/tileset.js +177 -0
- package/src/engine/core/scene/avatar.js +215 -0
- package/src/engine/core/scene/speech.js +138 -0
- package/src/engine/core/scene/sprite.js +702 -0
- package/src/engine/core/scene/spritz.js +189 -0
- package/src/engine/core/scene/world.js +681 -0
- package/src/engine/core/scene/zone.js +1167 -0
- package/src/engine/core/store/index.js +110 -0
- package/src/engine/dynamic/animatedSprite.js +64 -0
- package/src/engine/dynamic/animatedTile.js +98 -0
- package/src/engine/dynamic/avatar.js +110 -0
- package/src/engine/dynamic/map.js +174 -0
- package/src/engine/dynamic/sprite.js +255 -0
- package/src/engine/dynamic/spritz.js +119 -0
- package/src/engine/events/EventSystem.js +609 -0
- package/src/engine/events/camera.js +142 -0
- package/src/engine/events/chat.js +75 -0
- package/src/engine/events/menu.js +186 -0
- package/src/engine/scripting/CallbackManager.js +514 -0
- package/src/engine/scripting/PixoScriptInterpreter.js +81 -0
- package/src/engine/scripting/PixoScriptLibrary.js +704 -0
- package/src/engine/shaders/effects/index.js +450 -0
- package/src/engine/shaders/fs.js +222 -0
- package/src/engine/shaders/particles/fs.js +41 -0
- package/src/engine/shaders/particles/vs.js +61 -0
- package/src/engine/shaders/picker/fs.js +34 -0
- package/src/engine/shaders/picker/init.js +62 -0
- package/src/engine/shaders/picker/vs.js +42 -0
- package/src/engine/shaders/pxsl/README.md +250 -0
- package/src/engine/shaders/pxsl/index.js +25 -0
- package/src/engine/shaders/pxsl/library.js +608 -0
- package/src/engine/shaders/pxsl/manager.js +338 -0
- package/src/engine/shaders/pxsl/specification.js +363 -0
- package/src/engine/shaders/pxsl/transpiler.js +753 -0
- package/src/engine/shaders/skybox/cosmic/fs.js +147 -0
- package/src/engine/shaders/skybox/cosmic/vs.js +23 -0
- package/src/engine/shaders/skybox/matrix/fs.js +127 -0
- package/src/engine/shaders/skybox/matrix/vs.js +23 -0
- package/src/engine/shaders/skybox/morning/fs.js +109 -0
- package/src/engine/shaders/skybox/morning/vs.js +23 -0
- package/src/engine/shaders/skybox/neon/fs.js +119 -0
- package/src/engine/shaders/skybox/neon/vs.js +23 -0
- package/src/engine/shaders/skybox/sky/fs.js +114 -0
- package/src/engine/shaders/skybox/sky/vs.js +23 -0
- package/src/engine/shaders/skybox/sunset/fs.js +101 -0
- package/src/engine/shaders/skybox/sunset/vs.js +23 -0
- package/src/engine/shaders/transition/blur/fs.js +42 -0
- package/src/engine/shaders/transition/blur/vs.js +26 -0
- package/src/engine/shaders/transition/cross/fs.js +36 -0
- package/src/engine/shaders/transition/cross/vs.js +26 -0
- package/src/engine/shaders/transition/crossBlur/fs.js +41 -0
- package/src/engine/shaders/transition/crossBlur/vs.js +25 -0
- package/src/engine/shaders/transition/dissolve/fs.js +78 -0
- package/src/engine/shaders/transition/dissolve/vs.js +24 -0
- package/src/engine/shaders/transition/fade/fs.js +31 -0
- package/src/engine/shaders/transition/fade/vs.js +27 -0
- package/src/engine/shaders/transition/iris/fs.js +52 -0
- package/src/engine/shaders/transition/iris/vs.js +24 -0
- package/src/engine/shaders/transition/pixelate/fs.js +44 -0
- package/src/engine/shaders/transition/pixelate/vs.js +24 -0
- package/src/engine/shaders/transition/slide/fs.js +53 -0
- package/src/engine/shaders/transition/slide/vs.js +24 -0
- package/src/engine/shaders/transition/swirl/fs.js +39 -0
- package/src/engine/shaders/transition/swirl/vs.js +26 -0
- package/src/engine/shaders/transition/wipe/fs.js +50 -0
- package/src/engine/shaders/transition/wipe/vs.js +24 -0
- package/src/engine/shaders/vs.js +60 -0
- package/src/engine/utils/CameraController.js +506 -0
- package/src/engine/utils/ObjHelper.js +551 -0
- package/src/engine/utils/debug-logger.js +110 -0
- package/src/engine/utils/enums.js +305 -0
- package/src/engine/utils/generator.js +156 -0
- package/src/engine/utils/index.js +21 -0
- package/src/engine/utils/loaders/ActionLoader.js +77 -0
- package/src/engine/utils/loaders/AudioLoader.js +157 -0
- package/src/engine/utils/loaders/EventLoader.js +66 -0
- package/src/engine/utils/loaders/ObjectLoader.js +67 -0
- package/src/engine/utils/loaders/SpriteLoader.js +77 -0
- package/src/engine/utils/loaders/TilesetLoader.js +103 -0
- package/src/engine/utils/loaders/index.js +21 -0
- package/src/engine/utils/math/matrix4.js +367 -0
- package/src/engine/utils/math/vector.js +458 -0
- package/src/engine/utils/obj/_old_js/index.js +46 -0
- package/src/engine/utils/obj/_old_js/layout.js +308 -0
- package/src/engine/utils/obj/_old_js/material.js +711 -0
- package/src/engine/utils/obj/_old_js/mesh.js +761 -0
- package/src/engine/utils/obj/_old_js/utils.js +647 -0
- package/src/engine/utils/obj/index.js +24 -0
- package/src/engine/utils/obj/js/index.js +277 -0
- package/src/engine/utils/obj/js/loader.js +232 -0
- package/src/engine/utils/obj/layout.js +246 -0
- package/src/engine/utils/obj/material.js +665 -0
- package/src/engine/utils/obj/mesh.js +657 -0
- package/src/engine/utils/obj/ts/index.ts +72 -0
- package/src/engine/utils/obj/ts/layout.ts +265 -0
- package/src/engine/utils/obj/ts/material.ts +760 -0
- package/src/engine/utils/obj/ts/mesh.ts +785 -0
- package/src/engine/utils/obj/ts/utils.ts +501 -0
- package/src/engine/utils/obj/utils.js +428 -0
- package/src/engine/utils/resources.js +18 -0
- package/src/index.jsx +55 -0
- package/src/spritz/player.js +18 -0
- package/src/spritz/readme.md +18 -0
- package/LICENSE +0 -437
- package/dist/bundle.js.LICENSE.txt +0 -31
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __values = (this && this.__values) || function(o) {
|
|
18
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
19
|
+
if (m) return m.call(o);
|
|
20
|
+
if (o && typeof o.length === "number") return {
|
|
21
|
+
next: function () {
|
|
22
|
+
if (o && i >= o.length) o = void 0;
|
|
23
|
+
return { value: o && o[i++], done: !o };
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
27
|
+
};
|
|
28
|
+
exports.__esModule = true;
|
|
29
|
+
exports.Layout = exports.Attribute = exports.DuplicateAttributeException = exports.TYPES = void 0;
|
|
30
|
+
var TYPES;
|
|
31
|
+
(function (TYPES) {
|
|
32
|
+
TYPES["BYTE"] = "BYTE";
|
|
33
|
+
TYPES["UNSIGNED_BYTE"] = "UNSIGNED_BYTE";
|
|
34
|
+
TYPES["SHORT"] = "SHORT";
|
|
35
|
+
TYPES["UNSIGNED_SHORT"] = "UNSIGNED_SHORT";
|
|
36
|
+
TYPES["FLOAT"] = "FLOAT";
|
|
37
|
+
})(TYPES = exports.TYPES || (exports.TYPES = {}));
|
|
38
|
+
/**
|
|
39
|
+
* An exception for when two or more of the same attributes are found in the
|
|
40
|
+
* same layout.
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
var DuplicateAttributeException = /** @class */ (function (_super) {
|
|
44
|
+
__extends(DuplicateAttributeException, _super);
|
|
45
|
+
/**
|
|
46
|
+
* Create a DuplicateAttributeException
|
|
47
|
+
* @param {Attribute} attribute - The attribute that was found more than
|
|
48
|
+
* once in the {@link Layout}
|
|
49
|
+
*/
|
|
50
|
+
function DuplicateAttributeException(attribute) {
|
|
51
|
+
return _super.call(this, "found duplicate attribute: ".concat(attribute.key)) || this;
|
|
52
|
+
}
|
|
53
|
+
return DuplicateAttributeException;
|
|
54
|
+
}(Error));
|
|
55
|
+
exports.DuplicateAttributeException = DuplicateAttributeException;
|
|
56
|
+
/**
|
|
57
|
+
* Represents how a vertex attribute should be packed into an buffer.
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
var Attribute = /** @class */ (function () {
|
|
61
|
+
/**
|
|
62
|
+
* Create an attribute. Do not call this directly, use the predefined
|
|
63
|
+
* constants.
|
|
64
|
+
* @param {string} key - The name of this attribute as if it were a key in
|
|
65
|
+
* an Object. Use the camel case version of the upper snake case
|
|
66
|
+
* const name.
|
|
67
|
+
* @param {number} size - The number of components per vertex attribute.
|
|
68
|
+
* Must be 1, 2, 3, or 4.
|
|
69
|
+
* @param {string} type - The data type of each component for this
|
|
70
|
+
* attribute. Possible values:<br/>
|
|
71
|
+
* "BYTE": signed 8-bit integer, with values in [-128, 127]<br/>
|
|
72
|
+
* "SHORT": signed 16-bit integer, with values in
|
|
73
|
+
* [-32768, 32767]<br/>
|
|
74
|
+
* "UNSIGNED_BYTE": unsigned 8-bit integer, with values in
|
|
75
|
+
* [0, 255]<br/>
|
|
76
|
+
* "UNSIGNED_SHORT": unsigned 16-bit integer, with values in
|
|
77
|
+
* [0, 65535]<br/>
|
|
78
|
+
* "FLOAT": 32-bit floating point number
|
|
79
|
+
* @param {boolean} normalized - Whether integer data values should be
|
|
80
|
+
* normalized when being casted to a float.<br/>
|
|
81
|
+
* If true, signed integers are normalized to [-1, 1].<br/>
|
|
82
|
+
* If true, unsigned integers are normalized to [0, 1].<br/>
|
|
83
|
+
* For type "FLOAT", this parameter has no effect.
|
|
84
|
+
*/
|
|
85
|
+
function Attribute(key, size, type, normalized) {
|
|
86
|
+
if (normalized === void 0) { normalized = false; }
|
|
87
|
+
this.key = key;
|
|
88
|
+
this.size = size;
|
|
89
|
+
this.type = type;
|
|
90
|
+
this.normalized = normalized;
|
|
91
|
+
switch (type) {
|
|
92
|
+
case "BYTE":
|
|
93
|
+
case "UNSIGNED_BYTE":
|
|
94
|
+
this.sizeOfType = 1;
|
|
95
|
+
break;
|
|
96
|
+
case "SHORT":
|
|
97
|
+
case "UNSIGNED_SHORT":
|
|
98
|
+
this.sizeOfType = 2;
|
|
99
|
+
break;
|
|
100
|
+
case "FLOAT":
|
|
101
|
+
this.sizeOfType = 4;
|
|
102
|
+
break;
|
|
103
|
+
default:
|
|
104
|
+
throw new Error("Unknown gl type: ".concat(type));
|
|
105
|
+
}
|
|
106
|
+
this.sizeInBytes = this.sizeOfType * size;
|
|
107
|
+
}
|
|
108
|
+
return Attribute;
|
|
109
|
+
}());
|
|
110
|
+
exports.Attribute = Attribute;
|
|
111
|
+
/**
|
|
112
|
+
* A class to represent the memory layout for a vertex attribute array. Used by
|
|
113
|
+
* {@link Mesh}'s TBD(...) method to generate a packed array from mesh data.
|
|
114
|
+
* <p>
|
|
115
|
+
* Layout can sort of be thought of as a C-style struct declaration.
|
|
116
|
+
* {@link Mesh}'s TBD(...) method will use the {@link Layout} instance to
|
|
117
|
+
* pack an array in the given attribute order.
|
|
118
|
+
* <p>
|
|
119
|
+
* Layout also is very helpful when calling a WebGL context's
|
|
120
|
+
* <code>vertexAttribPointer</code> method. If you've created a buffer using
|
|
121
|
+
* a Layout instance, then the same Layout instance can be used to determine
|
|
122
|
+
* the size, type, normalized, stride, and offset parameters for
|
|
123
|
+
* <code>vertexAttribPointer</code>.
|
|
124
|
+
* <p>
|
|
125
|
+
* For example:
|
|
126
|
+
* <pre><code>
|
|
127
|
+
*
|
|
128
|
+
* const index = glctx.getAttribLocation(shaderProgram, "pos");
|
|
129
|
+
* glctx.vertexAttribPointer(
|
|
130
|
+
* layout.position.size,
|
|
131
|
+
* glctx[layout.position.type],
|
|
132
|
+
* layout.position.normalized,
|
|
133
|
+
* layout.position.stride,
|
|
134
|
+
* layout.position.offset);
|
|
135
|
+
* </code></pre>
|
|
136
|
+
* @see {@link Mesh}
|
|
137
|
+
*/
|
|
138
|
+
var Layout = /** @class */ (function () {
|
|
139
|
+
/**
|
|
140
|
+
* Create a Layout object. This constructor will throw if any duplicate
|
|
141
|
+
* attributes are given.
|
|
142
|
+
* @param {Array} ...attributes - An ordered list of attributes that
|
|
143
|
+
* describe the desired memory layout for each vertex attribute.
|
|
144
|
+
* <p>
|
|
145
|
+
*
|
|
146
|
+
* @see {@link Mesh}
|
|
147
|
+
*/
|
|
148
|
+
function Layout() {
|
|
149
|
+
var e_1, _a, e_2, _b;
|
|
150
|
+
var attributes = [];
|
|
151
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
152
|
+
attributes[_i] = arguments[_i];
|
|
153
|
+
}
|
|
154
|
+
this.attributes = attributes;
|
|
155
|
+
this.attributeMap = {};
|
|
156
|
+
var offset = 0;
|
|
157
|
+
var maxStrideMultiple = 0;
|
|
158
|
+
try {
|
|
159
|
+
for (var attributes_1 = __values(attributes), attributes_1_1 = attributes_1.next(); !attributes_1_1.done; attributes_1_1 = attributes_1.next()) {
|
|
160
|
+
var attribute = attributes_1_1.value;
|
|
161
|
+
if (this.attributeMap[attribute.key]) {
|
|
162
|
+
throw new DuplicateAttributeException(attribute);
|
|
163
|
+
}
|
|
164
|
+
// Add padding to satisfy WebGL's requirement that all
|
|
165
|
+
// vertexAttribPointer calls have an offset that is a multiple of
|
|
166
|
+
// the type size.
|
|
167
|
+
if (offset % attribute.sizeOfType !== 0) {
|
|
168
|
+
offset += attribute.sizeOfType - (offset % attribute.sizeOfType);
|
|
169
|
+
console.warn("Layout requires padding before " + attribute.key + " attribute");
|
|
170
|
+
}
|
|
171
|
+
this.attributeMap[attribute.key] = {
|
|
172
|
+
attribute: attribute,
|
|
173
|
+
size: attribute.size,
|
|
174
|
+
type: attribute.type,
|
|
175
|
+
normalized: attribute.normalized,
|
|
176
|
+
offset: offset
|
|
177
|
+
};
|
|
178
|
+
offset += attribute.sizeInBytes;
|
|
179
|
+
maxStrideMultiple = Math.max(maxStrideMultiple, attribute.sizeOfType);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
183
|
+
finally {
|
|
184
|
+
try {
|
|
185
|
+
if (attributes_1_1 && !attributes_1_1.done && (_a = attributes_1["return"])) _a.call(attributes_1);
|
|
186
|
+
}
|
|
187
|
+
finally { if (e_1) throw e_1.error; }
|
|
188
|
+
}
|
|
189
|
+
// Add padding to the end to satisfy WebGL's requirement that all
|
|
190
|
+
// vertexAttribPointer calls have a stride that is a multiple of the
|
|
191
|
+
// type size. Because we're putting differently sized attributes into
|
|
192
|
+
// the same buffer, it must be padded to a multiple of the largest
|
|
193
|
+
// type size.
|
|
194
|
+
if (offset % maxStrideMultiple !== 0) {
|
|
195
|
+
offset += maxStrideMultiple - (offset % maxStrideMultiple);
|
|
196
|
+
console.warn("Layout requires padding at the back");
|
|
197
|
+
}
|
|
198
|
+
this.stride = offset;
|
|
199
|
+
try {
|
|
200
|
+
for (var attributes_2 = __values(attributes), attributes_2_1 = attributes_2.next(); !attributes_2_1.done; attributes_2_1 = attributes_2.next()) {
|
|
201
|
+
var attribute = attributes_2_1.value;
|
|
202
|
+
this.attributeMap[attribute.key].stride = this.stride;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
206
|
+
finally {
|
|
207
|
+
try {
|
|
208
|
+
if (attributes_2_1 && !attributes_2_1.done && (_b = attributes_2["return"])) _b.call(attributes_2);
|
|
209
|
+
}
|
|
210
|
+
finally { if (e_2) throw e_2.error; }
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Geometry attributes
|
|
214
|
+
/**
|
|
215
|
+
* Attribute layout to pack a vertex's x, y, & z as floats
|
|
216
|
+
*
|
|
217
|
+
* @see {@link Layout}
|
|
218
|
+
*/
|
|
219
|
+
Layout.POSITION = new Attribute("position", 3, TYPES.FLOAT);
|
|
220
|
+
/**
|
|
221
|
+
* Attribute layout to pack a vertex's normal's x, y, & z as floats
|
|
222
|
+
*
|
|
223
|
+
* @see {@link Layout}
|
|
224
|
+
*/
|
|
225
|
+
Layout.NORMAL = new Attribute("normal", 3, TYPES.FLOAT);
|
|
226
|
+
/**
|
|
227
|
+
* Attribute layout to pack a vertex's normal's x, y, & z as floats.
|
|
228
|
+
* <p>
|
|
229
|
+
* This value will be computed on-the-fly based on the texture coordinates.
|
|
230
|
+
* If no texture coordinates are available, the generated value will default to
|
|
231
|
+
* 0, 0, 0.
|
|
232
|
+
*
|
|
233
|
+
* @see {@link Layout}
|
|
234
|
+
*/
|
|
235
|
+
Layout.TANGENT = new Attribute("tangent", 3, TYPES.FLOAT);
|
|
236
|
+
/**
|
|
237
|
+
* Attribute layout to pack a vertex's normal's bitangent x, y, & z as floats.
|
|
238
|
+
* <p>
|
|
239
|
+
* This value will be computed on-the-fly based on the texture coordinates.
|
|
240
|
+
* If no texture coordinates are available, the generated value will default to
|
|
241
|
+
* 0, 0, 0.
|
|
242
|
+
* @see {@link Layout}
|
|
243
|
+
*/
|
|
244
|
+
Layout.BITANGENT = new Attribute("bitangent", 3, TYPES.FLOAT);
|
|
245
|
+
/**
|
|
246
|
+
* Attribute layout to pack a vertex's texture coordinates' u & v as floats
|
|
247
|
+
*
|
|
248
|
+
* @see {@link Layout}
|
|
249
|
+
*/
|
|
250
|
+
Layout.UV = new Attribute("uv", 2, TYPES.FLOAT);
|
|
251
|
+
// Material attributes
|
|
252
|
+
/**
|
|
253
|
+
* Attribute layout to pack an unsigned short to be interpreted as a the index
|
|
254
|
+
* into a {@link Mesh}'s materials list.
|
|
255
|
+
* <p>
|
|
256
|
+
* The intention of this value is to send all of the {@link Mesh}'s materials
|
|
257
|
+
* into multiple shader uniforms and then reference the current one by this
|
|
258
|
+
* vertex attribute.
|
|
259
|
+
* <p>
|
|
260
|
+
* example glsl code:
|
|
261
|
+
*
|
|
262
|
+
* <pre><code>
|
|
263
|
+
* // this is bound using MATERIAL_INDEX
|
|
264
|
+
* attribute int materialIndex;
|
|
265
|
+
*
|
|
266
|
+
* struct Material {
|
|
267
|
+
* vec3 diffuse;
|
|
268
|
+
* vec3 specular;
|
|
269
|
+
* vec3 specularExponent;
|
|
270
|
+
* };
|
|
271
|
+
*
|
|
272
|
+
* uniform Material materials[MAX_MATERIALS];
|
|
273
|
+
*
|
|
274
|
+
* // ...
|
|
275
|
+
*
|
|
276
|
+
* vec3 diffuse = materials[materialIndex];
|
|
277
|
+
*
|
|
278
|
+
* </code></pre>
|
|
279
|
+
* TODO: More description & test to make sure subscripting by attributes even
|
|
280
|
+
* works for webgl
|
|
281
|
+
*
|
|
282
|
+
* @see {@link Layout}
|
|
283
|
+
*/
|
|
284
|
+
Layout.MATERIAL_INDEX = new Attribute("materialIndex", 1, TYPES.SHORT);
|
|
285
|
+
Layout.MATERIAL_ENABLED = new Attribute("materialEnabled", 1, TYPES.UNSIGNED_SHORT);
|
|
286
|
+
Layout.AMBIENT = new Attribute("ambient", 3, TYPES.FLOAT);
|
|
287
|
+
Layout.DIFFUSE = new Attribute("diffuse", 3, TYPES.FLOAT);
|
|
288
|
+
Layout.SPECULAR = new Attribute("specular", 3, TYPES.FLOAT);
|
|
289
|
+
Layout.SPECULAR_EXPONENT = new Attribute("specularExponent", 3, TYPES.FLOAT);
|
|
290
|
+
Layout.EMISSIVE = new Attribute("emissive", 3, TYPES.FLOAT);
|
|
291
|
+
Layout.TRANSMISSION_FILTER = new Attribute("transmissionFilter", 3, TYPES.FLOAT);
|
|
292
|
+
Layout.DISSOLVE = new Attribute("dissolve", 1, TYPES.FLOAT);
|
|
293
|
+
Layout.ILLUMINATION = new Attribute("illumination", 1, TYPES.UNSIGNED_SHORT);
|
|
294
|
+
Layout.REFRACTION_INDEX = new Attribute("refractionIndex", 1, TYPES.FLOAT);
|
|
295
|
+
Layout.SHARPNESS = new Attribute("sharpness", 1, TYPES.FLOAT);
|
|
296
|
+
Layout.MAP_DIFFUSE = new Attribute("mapDiffuse", 1, TYPES.SHORT);
|
|
297
|
+
Layout.MAP_AMBIENT = new Attribute("mapAmbient", 1, TYPES.SHORT);
|
|
298
|
+
Layout.MAP_SPECULAR = new Attribute("mapSpecular", 1, TYPES.SHORT);
|
|
299
|
+
Layout.MAP_SPECULAR_EXPONENT = new Attribute("mapSpecularExponent", 1, TYPES.SHORT);
|
|
300
|
+
Layout.MAP_DISSOLVE = new Attribute("mapDissolve", 1, TYPES.SHORT);
|
|
301
|
+
Layout.ANTI_ALIASING = new Attribute("antiAliasing", 1, TYPES.UNSIGNED_SHORT);
|
|
302
|
+
Layout.MAP_BUMP = new Attribute("mapBump", 1, TYPES.SHORT);
|
|
303
|
+
Layout.MAP_DISPLACEMENT = new Attribute("mapDisplacement", 1, TYPES.SHORT);
|
|
304
|
+
Layout.MAP_DECAL = new Attribute("mapDecal", 1, TYPES.SHORT);
|
|
305
|
+
Layout.MAP_EMISSIVE = new Attribute("mapEmissive", 1, TYPES.SHORT);
|
|
306
|
+
return Layout;
|
|
307
|
+
}());
|
|
308
|
+
exports.Layout = Layout;
|