Compare commits

...

2 commits

Author SHA1 Message Date
sam
95d79810a6 fix gitignore 2024-09-02 17:35:13 +12:00
sam
7b80e06c04 update makefile 2024-09-02 17:33:46 +12:00
4 changed files with 2929 additions and 104 deletions

3
.gitignore vendored
View file

@ -1,9 +1,10 @@
.DS_Store .DS_Store
.cache/ .cache/
.session.vim .session.vim
include/gear/resources.h
log.txt log.txt
*.exe *.exe
./gear gear-bin
compile_commands.json compile_commands.json
**/*.o **/*.o
**/*.glsl.h **/*.glsl.h

View file

@ -1,4 +1,4 @@
BINARY=gear BINARY=gear-bin
SHADERC=sokol-shdc SHADERC=sokol-shdc
@ -40,25 +40,29 @@ else
endif endif
endif endif
.PHONY: shaders resources .PHONY: shaders resources run clean bear
$(BINARY): shaders resources $(C_OBJ) $(OBJC_OBJ) $(BINARY): $(SHADER_OBJ) $(RESOUCES_OBJ) $(RESOURCES_H) $(C_OBJ) $(OBJC_OBJ)
$(CC) $(C_OBJ) $(OBJC_OBJ) $(RESOURCES_OBJ) $(LDFLAGS) -o $(BINARY) $(CC) $(C_OBJ) $(OBJC_OBJ) $(RESOURCES_OBJ) $(LDFLAGS) -o $(BINARY)
shaders: $(SHADER_OBJ) shaders: $(SHADER_OBJ)
@echo Shaders compiled @echo "Shaders compiled"
resources: resources: $(RESOURCES_OBJ) $(RESOURCES_H)
@echo "// Generated resource file" > res/res.c @echo "Resources compiled"
$(RESOURCES_OBJ): $(RESOURCES_C) $(RESOURCE_FILES)
@echo "// Generated resource file" > $(RESOURCES_C)
$(foreach res, $(RESOURCE_FILES), xxd -i $(res) >> $(RESOURCES_C);) $(foreach res, $(RESOURCE_FILES), xxd -i $(res) >> $(RESOURCES_C);)
$(CC) -o $(RESOURCES_OBJ) -c $(RESOURCES_C) $(CC) -o $@ -c $(RESOURCES_C)
@echo "#ifndef __G_RESOURCES_H__" > $(RESOURCES_H) $(RESOURCES_H): $(RESOURCES_OBJ)
@echo "#define __G_RESOURCES_H__" >> $(RESOURCES_H) @echo "#ifndef __G_RESOURCES_H__" > $@
@echo "#define __G_RESOURCES_H__" >> $@
@nm -g -j $(RESOURCES_OBJ) | \ @nm -g -j $(RESOURCES_OBJ) | \
awk '{ if($$0 ~ /len$$/) { print "extern int " substr($$0, 2) ";" } else { print "extern char " substr($$0, 2) "[];" } }' >> $(RESOURCES_H) awk '{ if($$0 ~ /len$$/) { print "extern int " substr($$0, 2) ";" } else { print "extern char " substr($$0, 2) "[];" } }' >> $@
@echo "#endif" >> $(RESOURCES_H) @echo "#endif" >> $@
@echo Resources compiled @echo "Resources compiled"
%.glsl.h: %.glsl %.glsl.h: %.glsl
$(SHADERC) --input $< --output $@ $(SHADER_FLAGS) $(SHADERC) --input $< --output $@ $(SHADER_FLAGS)

2911
res/res.c

File diff suppressed because it is too large Load diff

View file

@ -1,91 +0,0 @@
/*#include "gear/camera.h"
#include "gear/graphics/color.h"
#include "gear/graphics/models.h"
#include <gear/images.h>
#include <gear/graphics/textures.h>
#include <gear/graphics/renderer.h>
#include <gear/graphics/pipeline.h>
#include <sokol/sokol_app.h>
#include <sokol/sokol_gfx.h>
#include <sokol/sokol_log.h>
#include <sokol/sokol_glue.h>
#include <slibs/slibs.h>
#include <HandmadeMath/HandmadeMath.h>
#include <shaders/transform.glsl.h>
g_renderer* renderer;
g_camera* camera;
g_model* cube;
g_renderer_object obj;
static void init(void) {
sg_setup(&(sg_desc){
.environment = sglue_environment(),
.logger.func = slog_func,
});
renderer = g_renderer_create(G_CYAN);
camera = g_camera_create(HMM_V3(0.0f, 0.0f, -5.0f), HMM_V3(0.0f, 0.0f, 0.0f), 45.0f);
obj.bind.vertex_buffers[0] = cube->vertex_buffer;
obj.bind.index_buffer = cube->index_buffer;
g_texture* texture = g_texture_create_filtered(g_image_load("happi.jpg"), SG_FILTER_NEAREST, SG_FILTER_NEAREST);
obj.bind.fs.images[SLOT_tex] = texture->image;
obj.bind.fs.samplers[SLOT_smp] = texture->sampler;
sg_shader shd = sg_make_shader(transform_shader_desc(sg_query_backend()));
obj.pipeline = g_pipeline_create(shd, (sg_vertex_layout_state){
.attrs = {
[ATTR_vs_pos].format = SG_VERTEXFORMAT_FLOAT3,
[ATTR_vs_color0].format = SG_VERTEXFORMAT_UBYTE4N,
[ATTR_vs_texcoord0].format = SG_VERTEXFORMAT_SHORT2N,
}
});
}
float t = 0.0f;
void frame(void) {
t += sapp_frame_duration();
mat4 view_proj = g_camera_matrix(camera);
g_renderer_begin(renderer);
mat4 model = HMM_Rotate_RH(HMM_AngleDeg(0.0f), HMM_V3(1.0f, 0.0f, 0.0f));
model = HMM_Mul(model, HMM_Rotate_RH(HMM_AngleDeg(t * 10), HMM_V3(0.0f, 1.0f, 0.0f)));
mat4 mvp = HMM_Mul(view_proj, model);
vs_params_t params = {
.mvp = mvp,
.texture_scale = HMM_V2(1.0f, 1.0f),
};
g_pipeline_bind(renderer, obj.pipeline);
sg_apply_bindings(&obj.bind);
sg_apply_uniforms(SG_SHADERSTAGE_VS, SLOT_vs_params, SG_RANGE_REF(params));
g_renderer_draw(renderer, obj, cube->indices.size);
g_renderer_end(renderer);
}
void cleanup(void) {
sg_shutdown();
}
sapp_desc sokol_main(int argc, char* argv[]) {
(void)argc; (void)argv;
return (sapp_desc){
.init_cb = init,
.frame_cb = frame,
.cleanup_cb = cleanup,
.width = 640,
.height = 480,
.window_title = "Gear",
.icon.sokol_default = true,
.logger.func = slog_func,
.swap_interval = 0
};
}*/