Skip to content

Commit 511781b

Browse files
committed
More granular errors and warnings
1 parent 2d5d75d commit 511781b

1 file changed

Lines changed: 33 additions & 16 deletions

File tree

v3/src/renderer/webgl/ResourceManager.js

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ ResourceManager.prototype = {
5858
36057: 'Incomplete Dimensions',
5959
36061: 'Framebuffer Unsupported'
6060
};
61-
alert('Framebuffer incomplete. Framebuffer status: ' + errors[complete]);
6261
throw new Error('Framebuffer incomplete. Framebuffer status: ' + errors[complete]);
6362
}
6463

@@ -86,7 +85,6 @@ ResourceManager.prototype = {
8685
case gl.ELEMENT_ARRAY_BUFFER:
8786
return new Resources.IndexBuffer(gl, bufferObject);
8887
default:
89-
alert('Invalid Buffer Target');
9088
throw new Error('Invalid Buffer Target');
9189
}
9290

@@ -129,46 +127,65 @@ ResourceManager.prototype = {
129127
if (!(shaderName in this.shaderCache))
130128
{
131129
var gl = this.gl;
132-
var program = gl.createProgram();
133-
var vertShader = gl.createShader(gl.VERTEX_SHADER);
134-
var fragShader = gl.createShader(gl.FRAGMENT_SHADER);
130+
var program;
131+
var vertShader;
132+
var fragShader;
133+
var status;
135134
var error;
136135
var shader;
137136

137+
vertShader = gl.createShader(gl.VERTEX_SHADER);
138138
gl.shaderSource(vertShader, shaderSources.vert);
139-
gl.shaderSource(fragShader, shaderSources.frag);
140-
141139
gl.compileShader(vertShader);
142-
gl.compileShader(fragShader);
143140

144141
error = gl.getShaderInfoLog(vertShader);
142+
status = gl.getShaderParameter(vertShader, gl.COMPILE_STATUS);
145143

146-
if (error && error.length > 0)
144+
if (!status && error && error.length > 0)
147145
{
148-
alert('Vertex Shader Compilation Error.\n' + error);
149-
throw new Error('Vertex Shader Compilation Error.\n' + error);
146+
throw new Error('Vertex Shader Compilation Error. Shader name: ' + shaderName + '.\n' + error + '\n\n Shader source:\n' + shaderSources.vert);
150147
}
148+
else if (error && error.length > 0)
149+
{
150+
console.warn('Vertex Shader Compilation Warning. Shader name: ' + shaderName + '.\n' + error + '\n\n Shader source:\n' + shaderSources.vert);
151+
}
152+
153+
fragShader = gl.createShader(gl.FRAGMENT_SHADER);
154+
gl.shaderSource(fragShader, shaderSources.frag);
155+
gl.compileShader(fragShader);
151156

152157
error = gl.getShaderInfoLog(fragShader);
158+
status = gl.getShaderParameter(fragShader, gl.COMPILE_STATUS);
153159

154-
if (error && error.length > 0)
160+
if (!status && error && error.length > 0)
161+
{
162+
throw new Error('Fragment Shader Compilation Error. Shader name: ' + shaderName + '.\n' + error + '\n\n Shader source:\n' + shaderSources.frag);
163+
}
164+
else if (error && error.length > 0)
155165
{
156-
alert('Fragment Shader Compilation Error.\n' + error);
157-
throw new Error('Fragment Shader Compilation Error.\n' + error);
166+
console.warn('Fragment Shader Compilation Warning. Shader name: ' + shaderName + '.\n' + error + '\n\n Shader source:\n' + shaderSources.frag);
158167
}
159168

169+
program = gl.createProgram();
160170
gl.attachShader(program, vertShader);
161171
gl.attachShader(program, fragShader);
162172
gl.linkProgram(program);
173+
gl.validateProgram(program);
163174

164175
error = gl.getProgramParameter(program, gl.LINK_STATUS);
165176

166177
if (error === 0)
167178
{
168179
error = gl.getProgramInfoLog(program);
169180

170-
alert('Program Linking Error.\n' + error);
171-
throw new Error('Program Linking Error.\n' + error);
181+
throw new Error('Program Linking Error. Shader name: ' + shaderName + '.\n' + error);
182+
}
183+
184+
error = gl.getProgramParameter(program, gl.VALIDATE_STATUS);
185+
if (error === 0)
186+
{
187+
error = gl.getProgramInfoLog(program);
188+
throw new Error('Program Validation Error. Shader name: ' + shaderName + '.\n' + error);
172189
}
173190

174191
shader = new Resources.Shader(shaderName, gl, program, vertShader, fragShader);

0 commit comments

Comments
 (0)