Add import for shaders
This commit is contained in:
parent
9cb6516209
commit
db4a0f5f6f
|
|
@ -1,4 +1,9 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
extern unsigned char __heap_base;
|
extern unsigned char __heap_base;
|
||||||
|
|
@ -22,3 +27,7 @@ IMPORT(log) void print_int(int64_t);
|
||||||
|
|
||||||
EXPORT(__srand) void srand(uint64_t seed);
|
EXPORT(__srand) void srand(uint64_t seed);
|
||||||
uint64_t rand(void);
|
uint64_t rand(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
import { plugin, type BunPlugin } from "bun";
|
||||||
|
|
||||||
|
const filePlugin: BunPlugin = {
|
||||||
|
name: "File loader",
|
||||||
|
async setup(build) {
|
||||||
|
build.onLoad({ filter: /\.glsl$/ }, async (args) => {
|
||||||
|
console.log(args);
|
||||||
|
const text = await Bun.file(args.path).text();
|
||||||
|
return {
|
||||||
|
contents: `
|
||||||
|
const text = (${JSON.stringify(text)});
|
||||||
|
export default text;
|
||||||
|
`,
|
||||||
|
loader: 'js',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
plugin(filePlugin);
|
||||||
|
|
||||||
|
export default filePlugin;
|
||||||
|
|
@ -5,9 +5,10 @@ import UglifyJS from 'uglify-js';
|
||||||
import wasmPlugin from './wasmPlugin';
|
import wasmPlugin from './wasmPlugin';
|
||||||
import imagePlugin from './imagePlugin';
|
import imagePlugin from './imagePlugin';
|
||||||
import fontPlugin from './fontPlugin';
|
import fontPlugin from './fontPlugin';
|
||||||
|
import audioPlugin from './audioPlugin';
|
||||||
|
import filePlugin from './filePlugin';
|
||||||
|
|
||||||
import { getGames } from './isGame';
|
import { getGames } from './isGame';
|
||||||
import audioPlugin from './audioPlugin';
|
|
||||||
|
|
||||||
interface Args {
|
interface Args {
|
||||||
production?: boolean;
|
production?: boolean;
|
||||||
|
|
@ -30,6 +31,7 @@ export async function buildHTML(game: string, { production = false, portable = f
|
||||||
audioPlugin,
|
audioPlugin,
|
||||||
fontPlugin,
|
fontPlugin,
|
||||||
wasmPlugin({ production, portable }),
|
wasmPlugin({ production, portable }),
|
||||||
|
filePlugin,
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
attribute vec4 a_position;
|
||||||
|
attribute vec4 a_color;
|
||||||
|
|
||||||
|
varying vec4 v_color;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
gl_Position = a_position;
|
||||||
|
v_color = a_color;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
struct awoo {
|
||||||
|
int a;
|
||||||
|
|
||||||
|
awoo operator+(const awoo& other) const { return awoo{a + other.a}; }
|
||||||
|
|
||||||
|
operator int() const { return a * 2; }
|
||||||
|
};
|
||||||
|
|
||||||
|
EXPORT(cpptest) uint32_t cpptest() {
|
||||||
|
awoo a{42};
|
||||||
|
awoo b{69};
|
||||||
|
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
import { render } from "preact";
|
import { render } from "preact";
|
||||||
import attack from './assets/attack.wav';
|
import awoo from "./awoo.cpp";
|
||||||
|
import shader from './assets/shader.glsl';
|
||||||
|
|
||||||
export default function main() {
|
export default function main() {
|
||||||
|
console.log(shader);
|
||||||
render(
|
render(
|
||||||
<button onClick={() => attack.play()}>
|
<button onClick={() => console.log(awoo.cpptest())}>
|
||||||
Attack
|
Attack
|
||||||
</button>,
|
</button>,
|
||||||
document.body
|
document.body
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ declare module "*.c" {
|
||||||
data: DataView;
|
data: DataView;
|
||||||
malloc: (size: number) => number;
|
malloc: (size: number) => number;
|
||||||
free: (ptr: number) => void;
|
free: (ptr: number) => void;
|
||||||
|
realloc: (ptr: number, size: number) => number;
|
||||||
|
|
||||||
[x: string]: (...args: any) => any;
|
[x: string]: (...args: any) => any;
|
||||||
};
|
};
|
||||||
|
|
@ -57,8 +58,13 @@ declare module "*.cpp" {
|
||||||
data: DataView;
|
data: DataView;
|
||||||
malloc: (size: number) => void;
|
malloc: (size: number) => void;
|
||||||
free: (ptr: number) => void;
|
free: (ptr: number) => void;
|
||||||
|
realloc: (ptr: number, size: number) => number;
|
||||||
|
|
||||||
[x: string]: (...args: any) => any;
|
[x: string]: (...args: any) => any;
|
||||||
};
|
};
|
||||||
export default instance;
|
export default instance;
|
||||||
|
}
|
||||||
|
declare module "*.glsl" {
|
||||||
|
const content: string;
|
||||||
|
export default content;
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue