Have a basic outlining thing with stencils but required a bit of hacking to make it work in Scene::render.

This commit is contained in:
Zed A. Shaw 2026-08-28 15:48:28 -04:00
parent 993f148710
commit dc973009fd
13 changed files with 101 additions and 43 deletions

View file

@ -1,21 +1,25 @@
{
"scene": {
"shader": {
"vertex_path": "shaders/17-vert.glsl",
"frag_path": "shaders/17-frag.glsl"
"vertex_path": "shaders/18-vert.glsl",
"frag_path": "shaders/18-frag.glsl"
},
"light_shader": {
"vertex_path": "shaders/17-vert.glsl",
"frag_path": "shaders/17-lightsource.frag.glsl"
"vertex_path": "shaders/18-vert.glsl",
"frag_path": "shaders/18-lightsource.frag.glsl"
},
"outline_shader": {
"vertex_path": "shaders/18-vert.glsl",
"frag_path": "shaders/18-outline.glsl"
},
"materials": {
"crate": {
"default": {
"ambient": [0.5, 0.5, 0.5],
"shininess": 32.0,
"diffuseMap": 0,
"specularMap": 0
},
"popcorn": {
"shiny": {
"ambient": [0.5, 0.25, 0.31],
"shininess": 10000.0,
"diffuseMap": 0,
@ -23,29 +27,22 @@
}
},
"models": {
"crate": {
"marble_cube": {
"directory": "assets",
"model_path": "crate.obj"
"model_path": "marble_cube.glb"
},
"popcorn": {
"metal_floor": {
"directory": "assets",
"model_path": "popcorn_model_a.glb"
"model_path": "metal_floor.glb"
}
},
"things": [
{"model": "crate", "position": [0.0, 0.0, 0.0], "material": "crate"},
{"model": "crate", "position": [2.0, 5.0, -15.0], "material": "crate"},
{"model": "crate", "position": [-1.5, -2.2, -2.5], "material": "crate"},
{"model": "popcorn", "position": [-3.8, -2.0, -12.3], "material": "popcorn"},
{"model": "crate", "position": [ 2.4, -0.4, -3.5], "material": "crate"},
{"model": "crate", "position": [-1.7, 3.0, -7.5], "material": "crate"},
{"model": "popcorn", "position": [ 1.3, -2.0, -2.5], "material": "popcorn"},
{"model": "crate", "position": [ 1.5, 2.0, -2.5], "material": "crate"},
{"model": "popcorn", "position": [ 1.5, 0.2, -1.5], "material": "popcorn"},
{"model": "crate", "position": [-1.3, 1.0, -1.5], "material": "crate"}
{"model": "marble_cube", "position": [-1.0, 0.0, -1.0], "material": "default"},
{"model": "marble_cube", "position": [2.0, 0.0, 0.0], "material": "default"},
{"model": "metal_floor", "position": [0.0, 0.0, 0.0], "material": "shiny"}
],
"camera": {
"position": [0.0, 0.0, 3.0],
"position": [0.0, 0.1, 3.0],
"front": [0.0, 0.0, -1.0],
"up": [0.0, 1.0, 0.0],
"direction": [0.0, 0.0, 0.0],