Skip to content

Commit 404e9b4

Browse files
authored
Merge pull request #88 from shader-park/create-with-generated-glsl
Proposal for create sculptures w/ pre-generated GLSL
2 parents 07891d7 + b50502c commit 404e9b4

File tree

6 files changed

+95
-23
lines changed

6 files changed

+95
-23
lines changed

dist/shader-park-core.cjs.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Version: 0.1.27 - June 22, 2022 00:59:56 */
1+
/* Version: 0.1.27 - July 21, 2022 20:52:46 */
22
'use strict';
33

44
Object.defineProperty(exports, '__esModule', { value: true });
@@ -96211,8 +96211,15 @@ function sculptToThreeJSShaderSource(source) {
9621196211
colorGLSL: src.colorGLSL
9621296212
};
9621396213
}
96214-
function sculptToThreeJSMaterial(source, payload) {
96215-
var src = sculptToThreeJSShaderSource(source);
96214+
function sculptToThreeJSMaterial(source, payload, generatedGLSL) {
96215+
var src;
96216+
96217+
if (generatedGLSL) {
96218+
src = generatedGLSL;
96219+
} else {
96220+
src = sculptToThreeJSShaderSource(source);
96221+
}
96222+
9621696223
var material = makeMaterial(src.uniforms, src.vert, src.frag, payload);
9621796224
material.uniformDescriptions = src.uniforms;
9621896225
return material;
@@ -96226,18 +96233,20 @@ function createSculptureWithGeometry(geometry, source) {
9622696233
return {};
9622796234
};
9622896235
var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
96236+
var generatedGLSL = arguments.length > 4 ? arguments[4] : undefined;
9622996237
geometry.computeBoundingSphere();
9623096238
var radius = "radius" in params ? params.radius : geometry.boundingSphere.radius;
9623196239
params.radius = radius;
9623296240
params.geometry = geometry;
96233-
return createSculpture(source, uniformCallback, params);
96241+
return createSculpture(source, uniformCallback, params, generatedGLSL);
9623496242
} // uniformCallback
9623596243

9623696244
function createSculpture(source) {
9623796245
var uniformCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
9623896246
return {};
9623996247
};
9624096248
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
96249+
var generatedGLSL = arguments.length > 3 ? arguments[3] : undefined;
9624196250
source = convertFunctionToString(source);
9624296251
var radius = "radius" in params ? params.radius : 2;
9624396252
var geometry;
@@ -96249,7 +96258,7 @@ function createSculpture(source) {
9624996258
geometry = new SphereGeometry(radius, segments, segments);
9625096259
}
9625196260

96252-
var material = sculptToThreeJSMaterial(source);
96261+
var material = sculptToThreeJSMaterial(source, null, generatedGLSL);
9625396262
material.uniforms["opacity"].value = 1.0;
9625496263
material.uniforms["mouse"].value = new Vector3();
9625596264
material.uniforms["_scale"].value = radius;
@@ -96395,6 +96404,10 @@ function sculptToMinimalRenderer(canvas, source, updateUniforms) {
9639596404
var fullFrag = minimalHeader + usePBRHeader + useHemisphereLight + uniformsToGLSL(generatedGLSL.uniforms) + "const float STEP_SIZE_CONSTANT = " + generatedGLSL.stepSizeConstant + ";\n" + "const int MAX_ITERATIONS = " + generatedGLSL.maxIterations + ";\n" + sculptureStarterCode + generatedGLSL.geoGLSL + "\n" + generatedGLSL.colorGLSL + "\n" + fragFooter;
9639696405
return fragToMinimalRenderer(canvas, fullFrag, updateUniforms);
9639796406
}
96407+
function generatedGLSLToMinimalRenderer(generatedGLSL) {
96408+
var fullFrag = minimalHeader + usePBRHeader + useHemisphereLight + uniformsToGLSL(generatedGLSL.uniforms) + "const float STEP_SIZE_CONSTANT = " + generatedGLSL.stepSizeConstant + ";\n" + "const int MAX_ITERATIONS = " + generatedGLSL.maxIterations + ";\n" + sculptureStarterCode + generatedGLSL.geoGLSL + "\n" + generatedGLSL.colorGLSL + "\n" + fragFooter;
96409+
return fragToMinimalRenderer(canvas, fullFrag, updateUniforms);
96410+
}
9639896411

9639996412
function fragToMinimalRenderer(canvas, fullFrag, updateUniforms) {
9640096413
// if no update function is provided assume no-op
@@ -96648,6 +96661,7 @@ exports.createSculpture = createSculpture;
9664896661
exports.createSculptureWithGeometry = createSculptureWithGeometry;
9664996662
exports.defaultFragSourceGLSL = defaultFragSourceGLSL;
9665096663
exports.fragFooter = fragFooter;
96664+
exports.generatedGLSLToMinimalRenderer = generatedGLSLToMinimalRenderer;
9665196665
exports.glslToMinimalHTMLRenderer = glslToMinimalHTMLRenderer;
9665296666
exports.glslToMinimalRenderer = glslToMinimalRenderer;
9665396667
exports.glslToOfflineRenderer = glslToOfflineRenderer;

dist/shader-park-core.esm.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Version: 0.1.27 - June 22, 2022 00:59:56 */
1+
/* Version: 0.1.27 - July 21, 2022 20:52:46 */
22
function createMetadataMethodsForProperty(metadataMap, kind, property) {
33
return {
44
getMetadata: function (key) {
@@ -96207,8 +96207,15 @@ function sculptToThreeJSShaderSource(source) {
9620796207
colorGLSL: src.colorGLSL
9620896208
};
9620996209
}
96210-
function sculptToThreeJSMaterial(source, payload) {
96211-
var src = sculptToThreeJSShaderSource(source);
96210+
function sculptToThreeJSMaterial(source, payload, generatedGLSL) {
96211+
var src;
96212+
96213+
if (generatedGLSL) {
96214+
src = generatedGLSL;
96215+
} else {
96216+
src = sculptToThreeJSShaderSource(source);
96217+
}
96218+
9621296219
var material = makeMaterial(src.uniforms, src.vert, src.frag, payload);
9621396220
material.uniformDescriptions = src.uniforms;
9621496221
return material;
@@ -96222,18 +96229,20 @@ function createSculptureWithGeometry(geometry, source) {
9622296229
return {};
9622396230
};
9622496231
var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
96232+
var generatedGLSL = arguments.length > 4 ? arguments[4] : undefined;
9622596233
geometry.computeBoundingSphere();
9622696234
var radius = "radius" in params ? params.radius : geometry.boundingSphere.radius;
9622796235
params.radius = radius;
9622896236
params.geometry = geometry;
96229-
return createSculpture(source, uniformCallback, params);
96237+
return createSculpture(source, uniformCallback, params, generatedGLSL);
9623096238
} // uniformCallback
9623196239

9623296240
function createSculpture(source) {
9623396241
var uniformCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
9623496242
return {};
9623596243
};
9623696244
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
96245+
var generatedGLSL = arguments.length > 3 ? arguments[3] : undefined;
9623796246
source = convertFunctionToString(source);
9623896247
var radius = "radius" in params ? params.radius : 2;
9623996248
var geometry;
@@ -96245,7 +96254,7 @@ function createSculpture(source) {
9624596254
geometry = new SphereGeometry(radius, segments, segments);
9624696255
}
9624796256

96248-
var material = sculptToThreeJSMaterial(source);
96257+
var material = sculptToThreeJSMaterial(source, null, generatedGLSL);
9624996258
material.uniforms["opacity"].value = 1.0;
9625096259
material.uniforms["mouse"].value = new Vector3();
9625196260
material.uniforms["_scale"].value = radius;
@@ -96391,6 +96400,10 @@ function sculptToMinimalRenderer(canvas, source, updateUniforms) {
9639196400
var fullFrag = minimalHeader + usePBRHeader + useHemisphereLight + uniformsToGLSL(generatedGLSL.uniforms) + "const float STEP_SIZE_CONSTANT = " + generatedGLSL.stepSizeConstant + ";\n" + "const int MAX_ITERATIONS = " + generatedGLSL.maxIterations + ";\n" + sculptureStarterCode + generatedGLSL.geoGLSL + "\n" + generatedGLSL.colorGLSL + "\n" + fragFooter;
9639296401
return fragToMinimalRenderer(canvas, fullFrag, updateUniforms);
9639396402
}
96403+
function generatedGLSLToMinimalRenderer(generatedGLSL) {
96404+
var fullFrag = minimalHeader + usePBRHeader + useHemisphereLight + uniformsToGLSL(generatedGLSL.uniforms) + "const float STEP_SIZE_CONSTANT = " + generatedGLSL.stepSizeConstant + ";\n" + "const int MAX_ITERATIONS = " + generatedGLSL.maxIterations + ";\n" + sculptureStarterCode + generatedGLSL.geoGLSL + "\n" + generatedGLSL.colorGLSL + "\n" + fragFooter;
96405+
return fragToMinimalRenderer(canvas, fullFrag, updateUniforms);
96406+
}
9639496407

9639596408
function fragToMinimalRenderer(canvas, fullFrag, updateUniforms) {
9639696409
// if no update function is provided assume no-op
@@ -96638,4 +96651,4 @@ function sculptToTouchDesignerShaderSource(source) {
9663896651

9663996652
console.log('using shader-park-core version: 0.1.27'); /// Generate code for various targets
9664096653

96641-
export { baseUniforms, bindStaticData, createSculpture, createSculptureWithGeometry, defaultFragSourceGLSL, fragFooter, glslToMinimalHTMLRenderer, glslToMinimalRenderer, glslToOfflineRenderer, glslToThreeJSMaterial, glslToThreeJSMesh, glslToThreeJSShaderSource, glslToTouchDesignerShaderSource, minimalHeader, minimalVertexSource, sculptToGLSL, sculptToMinimalHTMLRenderer, sculptToMinimalRenderer, sculptToOfflineRenderer, sculptToRawSDF4Meshing, sculptToThreeJSMaterial, sculptToThreeJSMesh, sculptToThreeJSShaderSource, sculptToTouchDesignerShaderSource, sculptureStarterCode, uniformsToGLSL, useHemisphereLight, usePBRHeader };
96654+
export { baseUniforms, bindStaticData, createSculpture, createSculptureWithGeometry, defaultFragSourceGLSL, fragFooter, generatedGLSLToMinimalRenderer, glslToMinimalHTMLRenderer, glslToMinimalRenderer, glslToOfflineRenderer, glslToThreeJSMaterial, glslToThreeJSMesh, glslToThreeJSShaderSource, glslToTouchDesignerShaderSource, minimalHeader, minimalVertexSource, sculptToGLSL, sculptToMinimalHTMLRenderer, sculptToMinimalRenderer, sculptToOfflineRenderer, sculptToRawSDF4Meshing, sculptToThreeJSMaterial, sculptToThreeJSMesh, sculptToThreeJSShaderSource, sculptToTouchDesignerShaderSource, sculptureStarterCode, uniformsToGLSL, useHemisphereLight, usePBRHeader };

dist/shader-park-core.umd.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Version: 0.1.27 - June 22, 2022 00:59:53 */
1+
/* Version: 0.1.27 - July 21, 2022 20:52:44 */
22
(function (global, factory) {
33
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
44
typeof define === 'function' && define.amd ? define(['exports'], factory) :
@@ -96213,8 +96213,15 @@
9621396213
colorGLSL: src.colorGLSL
9621496214
};
9621596215
}
96216-
function sculptToThreeJSMaterial(source, payload) {
96217-
var src = sculptToThreeJSShaderSource(source);
96216+
function sculptToThreeJSMaterial(source, payload, generatedGLSL) {
96217+
var src;
96218+
96219+
if (generatedGLSL) {
96220+
src = generatedGLSL;
96221+
} else {
96222+
src = sculptToThreeJSShaderSource(source);
96223+
}
96224+
9621896225
var material = makeMaterial(src.uniforms, src.vert, src.frag, payload);
9621996226
material.uniformDescriptions = src.uniforms;
9622096227
return material;
@@ -96228,18 +96235,20 @@
9622896235
return {};
9622996236
};
9623096237
var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
96238+
var generatedGLSL = arguments.length > 4 ? arguments[4] : undefined;
9623196239
geometry.computeBoundingSphere();
9623296240
var radius = "radius" in params ? params.radius : geometry.boundingSphere.radius;
9623396241
params.radius = radius;
9623496242
params.geometry = geometry;
96235-
return createSculpture(source, uniformCallback, params);
96243+
return createSculpture(source, uniformCallback, params, generatedGLSL);
9623696244
} // uniformCallback
9623796245

9623896246
function createSculpture(source) {
9623996247
var uniformCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
9624096248
return {};
9624196249
};
9624296250
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
96251+
var generatedGLSL = arguments.length > 3 ? arguments[3] : undefined;
9624396252
source = convertFunctionToString(source);
9624496253
var radius = "radius" in params ? params.radius : 2;
9624596254
var geometry;
@@ -96251,7 +96260,7 @@
9625196260
geometry = new SphereGeometry(radius, segments, segments);
9625296261
}
9625396262

96254-
var material = sculptToThreeJSMaterial(source);
96263+
var material = sculptToThreeJSMaterial(source, null, generatedGLSL);
9625596264
material.uniforms["opacity"].value = 1.0;
9625696265
material.uniforms["mouse"].value = new Vector3();
9625796266
material.uniforms["_scale"].value = radius;
@@ -96397,6 +96406,10 @@
9639796406
var fullFrag = minimalHeader + usePBRHeader + useHemisphereLight + uniformsToGLSL(generatedGLSL.uniforms) + "const float STEP_SIZE_CONSTANT = " + generatedGLSL.stepSizeConstant + ";\n" + "const int MAX_ITERATIONS = " + generatedGLSL.maxIterations + ";\n" + sculptureStarterCode + generatedGLSL.geoGLSL + "\n" + generatedGLSL.colorGLSL + "\n" + fragFooter;
9639896407
return fragToMinimalRenderer(canvas, fullFrag, updateUniforms);
9639996408
}
96409+
function generatedGLSLToMinimalRenderer(generatedGLSL) {
96410+
var fullFrag = minimalHeader + usePBRHeader + useHemisphereLight + uniformsToGLSL(generatedGLSL.uniforms) + "const float STEP_SIZE_CONSTANT = " + generatedGLSL.stepSizeConstant + ";\n" + "const int MAX_ITERATIONS = " + generatedGLSL.maxIterations + ";\n" + sculptureStarterCode + generatedGLSL.geoGLSL + "\n" + generatedGLSL.colorGLSL + "\n" + fragFooter;
96411+
return fragToMinimalRenderer(canvas, fullFrag, updateUniforms);
96412+
}
9640096413

9640196414
function fragToMinimalRenderer(canvas, fullFrag, updateUniforms) {
9640296415
// if no update function is provided assume no-op
@@ -96650,6 +96663,7 @@
9665096663
exports.createSculptureWithGeometry = createSculptureWithGeometry;
9665196664
exports.defaultFragSourceGLSL = defaultFragSourceGLSL;
9665296665
exports.fragFooter = fragFooter;
96666+
exports.generatedGLSLToMinimalRenderer = generatedGLSLToMinimalRenderer;
9665396667
exports.glslToMinimalHTMLRenderer = glslToMinimalHTMLRenderer;
9665496668
exports.glslToMinimalRenderer = glslToMinimalRenderer;
9665596669
exports.glslToOfflineRenderer = glslToOfflineRenderer;

index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import {
1616

1717
import {
1818
sculptToMinimalRenderer,
19-
glslToMinimalRenderer
19+
glslToMinimalRenderer,
20+
generatedGLSLToMinimalRenderer
2021
} from './targets/minimalRenderer.js'
2122

2223
import {
@@ -69,6 +70,7 @@ export {
6970
glslToTouchDesignerShaderSource,
7071
sculptToTouchDesignerShaderSource,
7172
sculptToMinimalRenderer,
73+
generatedGLSLToMinimalRenderer,
7274
sculptToMinimalHTMLRenderer,
7375
glslToMinimalRenderer,
7476
glslToMinimalHTMLRenderer,

targets/minimalRenderer.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,27 @@ export function sculptToMinimalRenderer(canvas, source, updateUniforms) {
6060
return fragToMinimalRenderer(canvas, fullFrag, updateUniforms);
6161
}
6262

63+
export function generatedGLSLToMinimalRenderer(generatedGLSL) {
64+
let fullFrag =
65+
minimalHeader +
66+
usePBRHeader +
67+
useHemisphereLight +
68+
uniformsToGLSL(generatedGLSL.uniforms) +
69+
"const float STEP_SIZE_CONSTANT = " +
70+
generatedGLSL.stepSizeConstant +
71+
";\n" +
72+
"const int MAX_ITERATIONS = " +
73+
generatedGLSL.maxIterations +
74+
";\n" +
75+
sculptureStarterCode +
76+
generatedGLSL.geoGLSL +
77+
"\n" +
78+
generatedGLSL.colorGLSL +
79+
"\n" +
80+
fragFooter;
81+
return fragToMinimalRenderer(canvas, fullFrag, updateUniforms);
82+
}
83+
6384
function fragToMinimalRenderer(canvas, fullFrag, updateUniforms) {
6485
// if no update function is provided assume no-op
6586
if (updateUniforms === undefined) {

targets/threeJS.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,13 @@ export function sculptToThreeJSShaderSource(source) {
9292
};
9393
}
9494

95-
export function sculptToThreeJSMaterial(source, payload) {
96-
let src = sculptToThreeJSShaderSource(source);
95+
export function sculptToThreeJSMaterial(source, payload, generatedGLSL) {
96+
let src;
97+
if(generatedGLSL) {
98+
src = generatedGLSL;
99+
} else {
100+
src = sculptToThreeJSShaderSource(source);
101+
}
97102
let material = makeMaterial(src.uniforms, src.vert, src.frag, payload);
98103
material.uniformDescriptions = src.uniforms;
99104
return material;
@@ -110,14 +115,15 @@ export function createSculptureWithGeometry(
110115
uniformCallback = () => {
111116
return {};
112117
},
113-
params = {}
118+
params = {},
119+
generatedGLSL
114120
) {
115121
geometry.computeBoundingSphere();
116122
let radius =
117123
"radius" in params ? params.radius : geometry.boundingSphere.radius;
118124
params.radius = radius;
119125
params.geometry = geometry;
120-
return createSculpture(source, uniformCallback, params);
126+
return createSculpture(source, uniformCallback, params, generatedGLSL);
121127
}
122128

123129
// uniformCallback
@@ -126,7 +132,8 @@ export function createSculpture(
126132
uniformCallback = () => {
127133
return {};
128134
},
129-
params = {}
135+
params = {},
136+
generatedGLSL
130137
) {
131138
source = convertFunctionToString(source);
132139

@@ -139,7 +146,8 @@ export function createSculpture(
139146
let segments = "segments" in params ? params.segments : 8;
140147
geometry = new SphereGeometry(radius, segments, segments);
141148
}
142-
let material = sculptToThreeJSMaterial(source);
149+
150+
let material = sculptToThreeJSMaterial(source, null, generatedGLSL);
143151

144152
material.uniforms["opacity"].value = 1.0;
145153
material.uniforms["mouse"].value = new Vector3();

0 commit comments

Comments
 (0)