
Security News
Google’s OSV Fix Just Added 500+ New Advisories — All Thanks to One Small Policy Change
A data handling bug in OSV.dev caused disputed CVEs to disappear from vulnerability feeds until a recent fix restored over 500 advisories.
geo-ambient-occlusion
Advanced tools
GPU-accelerated per-vertex ambient occlusion generator built on top of regl.
Generates a per-vertex ambient occlusion array for arbitrary meshes.
OES_texture_float
extension.geo-ambient-occlusion
renders multiple shadow maps for your mesh from random viewpoints. It averages the occlusion
for each vertex across all the shadow maps to calculate an ambient occlusion value for each. This data is converted
into a Float32Array
of occlusion values and returned to you for immediate use as an attribute in your shader program.
geo-ambient-occlusion
is built on top of the disgustingly good regl WebGL
library.
npm install geo-ambient-occlusion
let dragon = require('stanford-dragon/2');
const geoao = require('geo-ambient-occlusion');
const aoSampler = geoao(dragon.positions, { cells: dragon.cells });
for (let i = 0; i < 256; i++) {
aoSampler.sample();
}
const ao = aoSampler.report();
aoSampler.dispose();
const geoao = require('geo-ambient-occlusion')
const aoSampler = geoao(positions[, opts])
positions
is the vertex array for your mesh. It can be any of:
[1,2,3,4,5,6]
[[1,2,3], [4,5,6]]
[new Float32Array([1,2,3]), new Float32Array([4,5,6])]
new Float32Array([1,2,3,4,5,6])
ndarray(new Float32Array([1,2,3,4,5,6]))
opts
is an object that can have the following properties:
resolution
(int) is the resolution to build the depth buffer at. Defaults to 512
.bias
(float) is the bias applied to the shadow map while building the ambient occlusion data. Defaults to 0.01
.cells
is the index data for your mesh, if you're using a simplicial complex. Defaults to undefined
.normals
are per-vertex normals, either in an array or array of arrays. If not supplied, they will be computed using the normals npm module.regl
is an optional regl context you can provide to reduced the overhead of
multiple WebGL contexts. This context will need to have the OES_texture_float
extension enabled, and depending on the
size of your mesh, also the OES_element_index_uint
extension.aoSampler.sample()
Collects a single sample of ambient occlusion data. Run this several hundred times to reach a useful average.
const ao = aoSampler.report()
Returns the average ambient occlusion, per vertex, sampled so far. Format is a Float32Array
.
aoSampler.dispose()
Disposes of all resources used for this sampling. Does not dispose of the internal regl
context if it was provided by
the user. Behavior of aoSampler
after calling this function is undefined.
FAQs
GPU-accelerated per-vertex ambient occlusion generator built on top of regl.
We found that geo-ambient-occlusion demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A data handling bug in OSV.dev caused disputed CVEs to disappear from vulnerability feeds until a recent fix restored over 500 advisories.
Research
/Security News
175 malicious npm packages (26k+ downloads) used unpkg CDN to host redirect scripts for a credential-phishing campaign targeting 135+ organizations worldwide.
Security News
Python 3.14 adds template strings, deferred annotations, and subinterpreters, plus free-threaded mode, an experimental JIT, and Sigstore verification.