mirror of
https://github.com/SamEyeBam/animate.git
synced 2026-02-04 09:20:25 +00:00
larry babby and threejs for glsl
This commit is contained in:
48
webGl/my-threejs-test/node_modules/glslify-bundle/lib/clean-suffixes.js
generated
vendored
Normal file
48
webGl/my-threejs-test/node_modules/glslify-bundle/lib/clean-suffixes.js
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
module.exports = clean
|
||||
|
||||
var suffix = /^([^_]+)_(\d{4,})$/
|
||||
|
||||
function clean (tokens) {
|
||||
var blacklist = {}
|
||||
var index = {}
|
||||
|
||||
for (var i = 0; i < tokens.length; i++) {
|
||||
var token = tokens[i]
|
||||
if (token.type !== 'ident') continue
|
||||
var match = token.data.match(suffix)
|
||||
if (!match) {
|
||||
blacklist[token.data] = true
|
||||
continue
|
||||
}
|
||||
|
||||
var pre = match[1]
|
||||
var suf = match[2]
|
||||
|
||||
index[pre] = index[pre] || {}
|
||||
index[pre][suf] = index[pre][suf] || []
|
||||
index[pre][suf].push(token)
|
||||
}
|
||||
|
||||
Object.keys(index).forEach(function (prefix) {
|
||||
var suffixes = Object.keys(index[prefix])
|
||||
if (suffixes.length === 1 && !blacklist[prefix]) {
|
||||
var tokens = index[prefix][suffixes[0]]
|
||||
for (var i = 0; i < tokens.length; i++) {
|
||||
tokens[i].data = prefix
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
suffixes.forEach(function (suffix, i) {
|
||||
var token = index[prefix][suffix]
|
||||
var rename = prefix + '_' + i
|
||||
if (blacklist[rename]) return
|
||||
for (var j = 0; j < token.length; j++) {
|
||||
token[j].data = rename
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
return tokens
|
||||
}
|
||||
69
webGl/my-threejs-test/node_modules/glslify-bundle/lib/topo-sort.js
generated
vendored
Normal file
69
webGl/my-threejs-test/node_modules/glslify-bundle/lib/topo-sort.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
module.exports = topoSort
|
||||
|
||||
// Permutes the dependencies into topological order
|
||||
function topoSort (deps) {
|
||||
// Build reversed adjacency list
|
||||
var adj = {}
|
||||
var inDegree = {}
|
||||
var index = {}
|
||||
deps.forEach(function (dep) {
|
||||
var v = dep.id
|
||||
var nbhd = Object.keys(dep.deps)
|
||||
index[dep.id] = dep
|
||||
inDegree[v] = nbhd.length
|
||||
nbhd.forEach(function (filename) {
|
||||
var u = dep.deps[filename]
|
||||
if (adj[u]) {
|
||||
adj[u].push(v)
|
||||
} else {
|
||||
adj[u] = [v]
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
// Initialize toVisit queue
|
||||
var result = []
|
||||
var inverse = {}
|
||||
deps.forEach(function (dep) {
|
||||
var v = dep.id
|
||||
if (!adj[v]) {
|
||||
adj[v] = []
|
||||
}
|
||||
if (inDegree[v] === 0) {
|
||||
inverse[v] = result.length
|
||||
result.push(v)
|
||||
}
|
||||
})
|
||||
|
||||
// Run BFS
|
||||
for (var ptr = 0; ptr < result.length; ptr++) {
|
||||
var v = result[ptr]
|
||||
adj[v].forEach(function (u) {
|
||||
if (--inDegree[u] === 0) {
|
||||
inverse[u] = result.length
|
||||
result.push(u)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (result.length !== deps.length) {
|
||||
throw new Error('cyclic dependency')
|
||||
}
|
||||
|
||||
// Relabel dependencies
|
||||
return result.map(function (v) {
|
||||
var dep = index[v]
|
||||
var deps = dep.deps
|
||||
var ndeps = {}
|
||||
Object.keys(deps).forEach(function (filename) {
|
||||
ndeps[filename] = inverse[deps[filename]] | 0
|
||||
})
|
||||
return {
|
||||
id: inverse[v] | 0,
|
||||
deps: ndeps,
|
||||
file: dep.file,
|
||||
source: dep.source,
|
||||
entry: dep.entry
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user