aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/src/core/script/renderer.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/helper-classes/RDGE/src/core/script/renderer.js')
-rwxr-xr-xjs/helper-classes/RDGE/src/core/script/renderer.js2310
1 files changed, 1126 insertions, 1184 deletions
diff --git a/js/helper-classes/RDGE/src/core/script/renderer.js b/js/helper-classes/RDGE/src/core/script/renderer.js
index c01068a4..0b9185d0 100755
--- a/js/helper-classes/RDGE/src/core/script/renderer.js
+++ b/js/helper-classes/RDGE/src/core/script/renderer.js
@@ -4,123 +4,91 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. 4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5</copyright> */ 5</copyright> */
6 6
7g_renderStats = {}; 7var RDGE = RDGE || {};
8g_renderStats.numDrawCalls = new stat("rendering", "numDrawCalls", 0, null, false); 8
9g_renderStats.numTriangles = new stat("rendering", "numTriangles", 0, null, false); 9// runtime globals
10g_renderStats.numVerts = new stat("rendering", "numVerts", 0, null, false); 10RDGE.rdgeConstants = (function () {
11g_renderStats.numPasses = new stat("rendering", "numPasses", 0, null, false); 11 return {
12g_renderStats.reset = function() { 12 // clear flags
13 g_renderStats.numTriangles.value = 0; 13 colorBuffer: 0x00004000,
14 g_renderStats.numDrawCalls.value = 0; 14 depthBuffer: 0x00000100,
15 g_renderStats.numVerts.value = 0; 15 stencilBuffer: 0x00000400,
16 g_renderStats.numPasses.value = 0; 16
17}; 17 // primitive types
18 18 POINTS: 0,
19rdgeConstants = {}; 19 LINES: 1,
20 20 LINE_LOOP: 2,
21/* 21 LINE_STRIP: 3,
22 * clear flags 22 TRIANGLES: 4,
23 */ 23 TRIANGLE_STRIP: 5,
24rdgeConstants.colorBuffer = 0x00004000; 24 TRIANGLE_FAN: 6,
25rdgeConstants.depthBuffer = 0x00000100; 25
26rdgeConstants.stencilBuffer = 0x00000400; 26 // primitive data types
27 27 BYTE: 0x1400,
28/* 28 UNSIGNED_BYTE: 0x1401,
29* buffer types 29 SHORT: 0x1402,
30*/ 30 UNSIGNED_SHORT: 0x1403,
31rdgeConstants.BUFFER_STATIC = 0; 31 INT: 0x1404,
32rdgeConstants.BUFFER_DYNAMIC = 1; 32 UNSIGNED_INT: 0x1405,
33rdgeConstants.BUFFER_STREAM = 2; 33 FLOAT: 0x1406,
34 34
35/* 35 // pre-defined vertex element type
36* primitive types 36 VS_ELEMENT_FLOAT4: 4,
37*/ 37 VS_ELEMENT_POS: 3,
38rdgeConstants.POINTS = 0; 38 VS_ELEMENT_NORM: 3,
39rdgeConstants.LINES = 1; 39 VS_ELEMENT_FLOAT3: 3,
40rdgeConstants.LINE_LOOP = 2; 40 VS_ELEMENT_FLOAT2: 2,
41rdgeConstants.LINE_STRIP = 3; 41 VS_ELEMENT_UV: 2,
42rdgeConstants.TRIANGLES = 4; 42 VS_ELEMENT_FLOAT: 1,
43rdgeConstants.TRIANGLE_STRIP = 5; 43 MAX_ELEM_TYPES: 7,
44rdgeConstants.TRIANGLE_FAN = 6; 44
45 45 // GL Definition of buffer types
46/* 46 BUFFER_STATIC: 0x88E0,
47 * primitive data types 47 BUFFER_DYNAMIC: 0x88E4,
48 */ 48 BUFFER_STREAM: 0x88E8,
49rdgeConstants.BYTE = 0x1400; 49
50rdgeConstants.UNSIGNED_BYTE = 0x1401; 50 // render constants
51rdgeConstants.SHORT = 0x1402; 51 MAX_MATERIAL_LIGHTS: 4,
52rdgeConstants.UNSIGNED_SHORT = 0x1403; 52
53rdgeConstants.INT = 0x1404; 53 // Material categories determine sorting materials support the following categories
54rdgeConstants.UNSIGNED_INT = 0x1405; 54 categoryEnumeration:
55rdgeConstants.FLOAT = 0x1406; 55 {
56 56 'BACKGROUND': 0,
57/* 57 'OPAQUE': 1,
58* pre-defined vertex element type 58 'TRANSPARENT': 2,
59*/ 59 'ADDITIVE': 3,
60rdgeConstants.VS_ELEMENT_FLOAT4 = 4; 60 'TRANSLUCENT': 4,
61rdgeConstants.VS_ELEMENT_POS = 3; 61 'FOREGROUND': 5,
62rdgeConstants.VS_ELEMENT_NORM = 3; 62 'MAX_CAT': 6
63rdgeConstants.VS_ELEMENT_FLOAT3 = 3; 63 },
64rdgeConstants.VS_ELEMENT_FLOAT2 = 2;
65rdgeConstants.VS_ELEMENT_UV = 2;
66rdgeConstants.VS_ELEMENT_FLOAT = 1;
67rdgeConstants.MAX_ELEM_TYPES = 7;
68
69// GL Definition of buffer types
70rdgeConstants.BUFFER_STATIC = 0x88E0;
71rdgeConstants.BUFFER_DYNAMIC = 0x88E4;
72rdgeConstants.BUFFER_STREAM = 0x88E8;
73
74// render constants
75rdgeConstants.MAX_MATERIAL_LIGHTS = 4;
76
77/*
78* Material categories determine sorting
79* materials support the following categories
80*/
81rdgeConstants.categoryEnumeration =
82{
83 'BACKGROUND' : 0,
84 'OPAQUE' : 1,
85 'TRANSPARENT' : 2,
86 'ADDITIVE' : 3,
87 'TRANSLUCENT' : 4,
88 'FOREGROUND' : 5,
89 'MAX_CAT' : 6
90};
91
92/*
93 * Node types supported by the scene graph
94 */
95rdgeConstants.nodeType =
96{
97 'TRNODE' : 0,
98 'MESHNODE' : 1,
99 'MATNODE' : 2,
100 'LIGHTNODE' : 3
101};
102
103// generate an id for the renderer to map a render buffer to primitive
104rdgeId = 0;
105function getBufferID()
106{
107 return rdgeId++;
108}
109
110 64
111_renderer = function(canvas) { 65 // Node types supported by the scene graph
66 nodeType:
67 {
68 'TRNODE': 0,
69 'MESHNODE': 1,
70 'MATNODE': 2,
71 'LIGHTNODE': 3
72 }
73 };
74})();
112 75
76RDGE._renderer = function (canvas) {
113 /* 77 /*
114 * Initialize the context associated with this canvas 78 * Initialize the context associated with this canvas
115 */ 79 */
116 this.ctx;
117
118 try { 80 try {
119 this.ctx = canvas.getContext("experimental-webgl", { preserveDrawingBuffer: true }); // true, true, false, true, true); 81 this.ctx = canvas.getContext("experimental-webgl", { preserveDrawingBuffer: true }); // true, true, false, true, true);
120 82
121 if (!this.ctx) this.ctx = canvas.getContext("webgl", { preserveDrawingBuffer: true }); 83 if (!this.ctx) {
122 if (!this.ctx) this.ctx = canvas.getContext("webkit-3d", { preserveDrawingBuffer: true }); 84 this.ctx = canvas.getContext("webgl", { preserveDrawingBuffer: true });
123 if (!this.ctx) this.ctx = canvas.getContext("moz-webgl", { preserveDrawingBuffer: true }); 85 }
86 if (!this.ctx) {
87 this.ctx = canvas.getContext("webkit-3d", { preserveDrawingBuffer: true });
88 }
89 if (!this.ctx) {
90 this.ctx = canvas.getContext("moz-webgl", { preserveDrawingBuffer: true });
91 }
124 } 92 }
125 catch (err) { } 93 catch (err) { }
126 if (!this.ctx) { 94 if (!this.ctx) {
@@ -132,7 +100,7 @@ _renderer = function(canvas) {
132 this.ctx.viewport(0, 0, canvas.width, canvas.height); 100 this.ctx.viewport(0, 0, canvas.width, canvas.height);
133 101
134 // Add a console output to the renderer 102 // Add a console output to the renderer
135 this.console = ("console" in window) ? window.console : { log: function() { } }; 103 this.console = ("console" in window) ? window.console : { log: function () { } };
136 104
137 /* 105 /*
138 * Set the default clear color 106 * Set the default clear color
@@ -219,7 +187,7 @@ _renderer = function(canvas) {
219 /* 187 /*
220 * the camera manager - contains the camera stack for this render context 188 * the camera manager - contains the camera stack for this render context
221 */ 189 */
222 this.cameraMan = new cameraManager(); 190 this.cameraMan = new RDGE.cameraManager();
223 191
224 /* 192 /*
225 * a list of device buffers that are owned by this render context 193 * a list of device buffers that are owned by this render context
@@ -230,88 +198,88 @@ _renderer = function(canvas) {
230 /* 198 /*
231 * State wrappers 199 * State wrappers
232 */ 200 */
233 this.cullBackFace = function() { 201 this.cullBackFace = function () {
234 this.ctx.cullFace(this.ctx.Back); 202 this.ctx.cullFace(this.ctx.Back);
235 } 203 };
236 204
237 this.cullFrontFace = function() { 205 this.cullFrontFace = function () {
238 this.ctx.cullFace(this.ctx.FRONT); 206 this.ctx.cullFace(this.ctx.FRONT);
239 } 207 };
240