Start adding documentation
This commit is contained in:
parent
b9089aaf03
commit
c728fe3aff
54 changed files with 12540 additions and 43 deletions
53
src/main.ts
53
src/main.ts
|
|
@ -1,3 +1,11 @@
|
|||
/**
|
||||
* Importing this file gives arrays (`Array` and `Float32Array` instances)
|
||||
* two new properties: `x` and `y`. The former refers to their 0th element,
|
||||
* and the latter to their 1st.
|
||||
*
|
||||
* @packageDocumentation
|
||||
*/
|
||||
|
||||
import { DrawableDescriptor } from './drawables/drawable-descriptor';
|
||||
import { Insights } from './graphics/rendering/insights';
|
||||
import { ContextAwareRenderer } from './graphics/rendering/renderer/context-aware-renderer';
|
||||
|
|
@ -5,15 +13,6 @@ import { Renderer } from './graphics/rendering/renderer/renderer';
|
|||
import { StartupSettings } from './graphics/rendering/settings/startup-settings';
|
||||
import { applyArrayPlugins } from './helper/array';
|
||||
|
||||
export { Drawable } from './drawables/drawable';
|
||||
export { DrawableDescriptor } from './drawables/drawable-descriptor';
|
||||
export { CircleLight } from './drawables/lights/circle-light';
|
||||
export { Flashlight } from './drawables/lights/flashlight';
|
||||
export { Circle } from './drawables/shapes/circle';
|
||||
export { InvertedTunnel } from './drawables/shapes/inverted-tunnel';
|
||||
export { Tunnel } from './drawables/shapes/tunnel';
|
||||
export { Renderer } from './graphics/rendering/renderer/renderer';
|
||||
|
||||
declare global {
|
||||
interface Array<T> {
|
||||
x: number;
|
||||
|
|
@ -28,16 +27,48 @@ declare global {
|
|||
|
||||
applyArrayPlugins();
|
||||
|
||||
/**
|
||||
* Compiles a new renderer instance. There can multiple renderers on a single page.
|
||||
* > Asynchronous behaviour is required for paralell shader compiling.
|
||||
* > Trying to draw before the returned promise resolves results in no action taken.
|
||||
* > Settings can be set before promise resolution and they will be applied later.
|
||||
*
|
||||
* The descriptors of every to-be-drawn objects are required before creating the renderer,
|
||||
* allowing the compiler to only create the shaders that will actually be used.
|
||||
*
|
||||
* Example usage:
|
||||
*
|
||||
* ```js
|
||||
* import { compile, Circle, CircleLight } from 'sdf-2d';
|
||||
*
|
||||
* const canvas = document.querySelector('canvas');
|
||||
* const renderer = await compile(canvas, [Circle.descriptor, CircleLight.descriptor]);
|
||||
* ```
|
||||
*
|
||||
* @param canvas The returned renderer will only be able to draw to this canvas.
|
||||
* @param descriptors The descriptor of every single object (and light) that
|
||||
* ever needs to be drawn by this renderer has to be given before compiling.
|
||||
* @param settingsOverrides Sensible defaults are provided, but these can be overriden.
|
||||
*
|
||||
* @category Startup
|
||||
*/
|
||||
export async function compile(
|
||||
canvas: HTMLCanvasElement,
|
||||
descriptors: Array<DrawableDescriptor>,
|
||||
settingsOverrides: Partial<StartupSettings> = {}
|
||||
): Promise<Renderer> {
|
||||
// enableContextLostSimulator(canvas);
|
||||
|
||||
return Insights.measureFunction('startup', async () => {
|
||||
const renderer = new ContextAwareRenderer(canvas, descriptors, settingsOverrides);
|
||||
await renderer.initializedPromise;
|
||||
return renderer;
|
||||
});
|
||||
}
|
||||
|
||||
export * from './drawables/drawable';
|
||||
export * from './drawables/drawable-descriptor';
|
||||
export * from './drawables/lights/circle-light';
|
||||
export * from './drawables/lights/flashlight';
|
||||
export * from './drawables/shapes/circle';
|
||||
export * from './drawables/shapes/inverted-tunnel';
|
||||
export * from './drawables/shapes/tunnel';
|
||||
export * from './graphics/rendering/renderer/renderer';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue