diff --git a/data/materials/platform.peony_materials b/data/materials/platform.peony_materials index 30f60a7..67bd359 100644 --- a/data/materials/platform.peony_materials +++ b/data/materials/platform.peony_materials @@ -1,7 +1,8 @@ > platform shader_asset.vert_path = standard.vert shader_asset.frag_path = standard.frag -textures.albedo_texture = [albedo, concrete.png] +; textures.albedo_texture = [albedo, concrete.png] +albedo_static = vec4(0.7, 0.7, 0.7, 1.0) metallic_static = 0.0 roughness_static = 1.0 ao_static = 1.0 diff --git a/data/scenes/animtest.peony_scene b/data/scenes/animtest.peony_scene new file mode 100644 index 0000000..021a71d --- /dev/null +++ b/data/scenes/animtest.peony_scene @@ -0,0 +1,662 @@ +> sun +model_path = cube.obj +materials = [light] +render_passes = [forward_nodepth] +spatial_component.position = vec3(0.0, 0.0, 0.0) +spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(0.3, 0.3, 0.3) +light_component.type = directional +light_component.direction = vec3(0.70, -0.70, 0.0) +light_component.color = vec4(4.0, 4.0, 4.0, 1.0) +light_component.attenuation = vec4(1.0, 0.0, 0.0, 0.0) + +> rocks +model_path = Stones_AssetKit.fbx +materials = [rocks] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(2.0, -3.5, 2.0) +spatial_component.rotation = vec4(45.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(0.05, 0.05, 0.05) + +> platform +model_path = platform/platform.obj +materials = [platform] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-19.0, 0.0, 12.0) +spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(10.0, 1.0, 10.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-12.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-12.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-12.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-12.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-12.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-12.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-12.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-12.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-14.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-14.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-14.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-14.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-14.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-14.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-14.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-14.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-16.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-16.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-16.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-16.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-16.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-16.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-16.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-16.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-18.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-18.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-18.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-18.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-18.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-18.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-18.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-18.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-20.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-20.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-20.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-20.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-20.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-20.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-20.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-20.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-22.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-22.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-22.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-22.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-22.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-22.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-22.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-22.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-24.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-24.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-24.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-24.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-24.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-24.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-24.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-24.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-26.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-26.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-26.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-26.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-26.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-26.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-26.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-26.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-28.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-28.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-28.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-28.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-28.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-28.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-28.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-28.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-30.0, 1.7, 5.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-30.0, 1.7, 7.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-30.0, 1.7, 9.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-30.0, 1.7, 11.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-30.0, 1.7, 13.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-30.0, 1.7, 15.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-30.0, 1.7, 17.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +> archer +model_path = archer.dae +materials = [archer] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-30.0, 1.7, 19.0) +spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> ocean +builtin_model_name = ocean +materials = [ocean] +render_passes = [forward_depth] +spatial_component.position = vec3(0.0, 0.0, 0.0) +spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) diff --git a/data/scenes/coast.peony_scene b/data/scenes/coast.peony_scene new file mode 100644 index 0000000..efb3df2 --- /dev/null +++ b/data/scenes/coast.peony_scene @@ -0,0 +1,96 @@ +> sun +model_path = cube.obj +materials = [light] +render_passes = [forward_nodepth] +spatial_component.position = vec3(0.0, 0.0, 0.0) +spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(0.3, 0.3, 0.3) +light_component.type = directional +light_component.direction = vec3(0.70, -0.70, 0.0) +light_component.color = vec4(4.0, 4.0, 4.0, 1.0) +light_component.attenuation = vec4(1.0, 0.0, 0.0, 0.0) + +> rocks +model_path = Stones_AssetKit.fbx +materials = [rocks] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(2.0, -3.5, 2.0) +spatial_component.rotation = vec4(45.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(0.05, 0.05, 0.05) + +; > archer +; model_path = archer.dae +; materials = [archer] +; render_passes = [deferred, shadowcaster] +; spatial_component.position = vec3(-10.0, 1.7, 5.0) +; spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) +; spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> goose +model_path = miniGoose.fbx +materials = [goose] +render_passes = [deferred] +spatial_component.position = vec3(-10.0, 1.7, 5.0) +spatial_component.rotation = vec4(-30.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(0.2, 0.2, 0.2) + +> platform +model_path = platform/platform.obj +materials = [platform] +render_passes = [deferred, shadowcaster] +spatial_component.position = vec3(-10.0, 0.0, 5.0) +spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +; > island +; model_path = island/island.obj +; materials = [island] +; render_passes = [deferred, shadowcaster] +; spatial_component.position = vec3(0.0, 0.0, 0.0) +; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +; spatial_component.scale = vec3(1.0, 1.0, 1.0) + +; > pointlight +; model_path = cube.obj +; materials = [light] +; render_passes = [forward_nodepth] +; spatial_component.position = vec3(-15.0, 3.0, 7.0) +; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +; spatial_component.scale = vec3(0.3, 0.3, 0.3) +; light_component.type = point +; light_component.direction = vec3(0.0, 0.0, 0.0) +; light_component.color = vec4(150.0, 0.0, 0.0, 1.0) +; light_component.attenuation = vec4(2.0, 0.18, 0.064, 0.0) + +; > axes +; builtin_model_name = axes +; materials = [axes] +; render_passes = [forward_nodepth] +; spatial_component.position = vec3(0.0, 0.1, 0.0) +; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +; spatial_component.scale = vec3(1.0, 1.0, 1.0) + +> ocean +builtin_model_name = ocean +materials = [ocean] +render_passes = [forward_depth] +spatial_component.position = vec3(0.0, 0.0, 0.0) +spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) + +; > temple +; model_path = shop.fbx +; materials = [temple_1, temple_2, temple_3] +; render_passes = [deferred, shadowcaster] +; spatial_component.position = vec3(0.0, 0.1, 0.0) +; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +; spatial_component.scale = vec3(0.1, 0.1, 0.1) + +> test +model_path = cube.obj +materials = [light] +render_passes = [forward_depth, shadowcaster] +spatial_component.position = vec3(0.0, 0.0, 0.0) +spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) +spatial_component.scale = vec3(1.0, 1.0, 1.0) +behavior_component.behavior = test diff --git a/data/scenes/demo.peony_scene b/data/scenes/demo.peony_scene deleted file mode 100644 index e47745e..0000000 --- a/data/scenes/demo.peony_scene +++ /dev/null @@ -1,354 +0,0 @@ -> sun -model_path = cube.obj -materials = [light] -render_passes = [forward_nodepth] -spatial_component.position = vec3(0.0, 0.0, 0.0) -spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(0.3, 0.3, 0.3) -light_component.type = directional -light_component.direction = vec3(0.70, -0.70, 0.0) -light_component.color = vec4(4.0, 4.0, 4.0, 1.0) -light_component.attenuation = vec4(1.0, 0.0, 0.0, 0.0) - -> rocks -model_path = Stones_AssetKit.fbx -materials = [rocks] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(2.0, -3.5, 2.0) -spatial_component.rotation = vec4(45.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(0.05, 0.05, 0.05) - -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-10.0, 1.7, 5.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-10.0, 1.7, 7.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-10.0, 1.7, 9.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-10.0, 1.7, 11.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-10.0, 1.7, 13.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-10.0, 1.7, 15.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) - -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-12.0, 1.7, 5.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-12.0, 1.7, 7.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-12.0, 1.7, 9.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-12.0, 1.7, 11.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-12.0, 1.7, 13.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-12.0, 1.7, 15.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) - -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-14.0, 1.7, 5.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-14.0, 1.7, 7.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-14.0, 1.7, 9.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-14.0, 1.7, 11.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-14.0, 1.7, 13.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-14.0, 1.7, 15.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) - -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-16.0, 1.7, 5.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-16.0, 1.7, 7.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-16.0, 1.7, 9.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-16.0, 1.7, 11.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-16.0, 1.7, 13.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-16.0, 1.7, 15.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) - -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-18.0, 1.7, 5.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-18.0, 1.7, 7.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-18.0, 1.7, 9.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-18.0, 1.7, 11.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-18.0, 1.7, 13.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-18.0, 1.7, 15.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) - -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-20.0, 1.7, 5.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-20.0, 1.7, 7.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-20.0, 1.7, 9.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-20.0, 1.7, 11.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-20.0, 1.7, 13.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -> archer -model_path = archer.dae -materials = [archer] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-20.0, 1.7, 15.0) -spatial_component.rotation = vec4(-90.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) - -; > vampire -; model_path = vampire.dae -; materials = [vampire] -; render_passes = [deferred, shadowcaster] -; spatial_component.position = vec3(-10.0, 1.7, 5.0) -; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -; spatial_component.scale = vec3(1.0, 1.0, 1.0) - -; > goose -; model_path = miniGoose.fbx -; materials = [goose] -; render_passes = [deferred] -; spatial_component.position = vec3(-4.6, 0.0, -1.5) -; spatial_component.rotation = vec4(-30.0, 0.0, 1.0, 0.0) -; spatial_component.scale = vec3(0.2, 0.2, 0.2) - -> platform -model_path = platform/platform.obj -materials = [platform] -render_passes = [deferred, shadowcaster] -spatial_component.position = vec3(-10.0, 0.0, 5.0) -spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) - -; > island -; model_path = island/island.obj -; materials = [island] -; render_passes = [deferred, shadowcaster] -; spatial_component.position = vec3(0.0, 0.0, 0.0) -; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -; spatial_component.scale = vec3(1.0, 1.0, 1.0) - -; > pointlight -; model_path = cube.obj -; materials = [light] -; render_passes = [forward_nodepth] -; spatial_component.position = vec3(-15.0, 3.0, 7.0) -; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -; spatial_component.scale = vec3(0.3, 0.3, 0.3) -; light_component.type = point -; light_component.direction = vec3(0.0, 0.0, 0.0) -; light_component.color = vec4(150.0, 0.0, 0.0, 1.0) -; light_component.attenuation = vec4(2.0, 0.18, 0.064, 0.0) - -; > axes -; builtin_model_name = axes -; materials = [axes] -; render_passes = [forward_nodepth] -; spatial_component.position = vec3(0.0, 0.1, 0.0) -; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -; spatial_component.scale = vec3(1.0, 1.0, 1.0) - -> ocean -builtin_model_name = ocean -materials = [ocean] -render_passes = [forward_depth] -spatial_component.position = vec3(0.0, 0.0, 0.0) -spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) - -; > temple -; model_path = shop.fbx -; materials = [temple_1, temple_2, temple_3] -; render_passes = [deferred, shadowcaster] -; spatial_component.position = vec3(0.0, 0.1, 0.0) -; spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -; spatial_component.scale = vec3(0.1, 0.1, 0.1) - -> test -model_path = cube.obj -materials = [light] -render_passes = [forward_depth, shadowcaster] -spatial_component.position = vec3(0.0, 0.0, 0.0) -spatial_component.rotation = vec4(0.0, 0.0, 1.0, 0.0) -spatial_component.scale = vec3(1.0, 1.0, 1.0) -behavior_component.behavior = test diff --git a/src/array.hpp b/src/array.hpp index d9e4203..118d696 100644 --- a/src/array.hpp +++ b/src/array.hpp @@ -71,7 +71,13 @@ public: return &this->items[this->length]; } + void clear() { + memset(this->items, 0, sizeof(T) * this->capacity); + this->length = 0; + } + void delete_elements_after_index(uint32 idx) { + memset(&this->items[idx], 0, sizeof(T) * (this->length - idx)); this->length = idx; } diff --git a/src/entity_sets.cpp b/src/entity_sets.cpp index 724b5d7..2e221eb 100644 --- a/src/entity_sets.cpp +++ b/src/entity_sets.cpp @@ -191,7 +191,8 @@ void EntitySets::update_light_components( LightComponentSet *light_component_set, SpatialComponentSet *spatial_component_set, real64 t, - glm::vec3 camera_position + glm::vec3 camera_position, + real32 dir_light_angle ) { for_each (light_component, light_component_set->components) { if (light_component->entity_handle == Entity::no_entity_handle) { @@ -216,6 +217,9 @@ void EntitySets::update_light_components( if (light_component->type == LightType::directional) { spatial_component->position = camera_position + -light_component->direction * Renderer::DIRECTIONAL_LIGHT_DISTANCE; + light_component->direction = glm::vec3( + sin(dir_light_angle), -cos(dir_light_angle), 0.0f + ); } } } diff --git a/src/entity_sets.hpp b/src/entity_sets.hpp index 6299f6d..0817f66 100644 --- a/src/entity_sets.hpp +++ b/src/entity_sets.hpp @@ -85,7 +85,8 @@ namespace EntitySets { LightComponentSet *light_component_set, SpatialComponentSet *spatial_component_set, real64 t, - glm::vec3 camera_position + glm::vec3 camera_position, + real32 dir_light_angle ); uint32 get_bone_matrix_anim_key_for_timepoint( BoneMatrixPool *bone_matrix_pool, diff --git a/src/gui.hpp b/src/gui.hpp index 31e5353..33e8d2a 100644 --- a/src/gui.hpp +++ b/src/gui.hpp @@ -58,7 +58,7 @@ namespace Gui { constexpr glm::vec2 GUI_BUTTON_AUTOSIZE_PADDING = glm::vec2(20.0f, 20.0f); constexpr glm::vec2 GUI_BUTTON_DEFAULT_BORDER = glm::vec2(0.0f); - constexpr real32 GUI_NAMED_VALUE_NAME_WIDTH = 200.0f; + constexpr real32 GUI_NAMED_VALUE_NAME_WIDTH = 250.0f; constexpr real32 GUI_TOGGLE_SPACING = 20.0f; constexpr glm::vec2 GUI_TOGGLE_BUTTON_SIZE = glm::vec2(20.0f); constexpr glm::vec2 GUI_TOGGLE_BUTTON_DEFAULT_BORDER = glm::vec2(0.0f); diff --git a/src/intrinsics.hpp b/src/intrinsics.hpp index 32eff13..310f47f 100644 --- a/src/intrinsics.hpp +++ b/src/intrinsics.hpp @@ -16,6 +16,8 @@ #define DEG_TO_RAD(deg) ((deg) * PI / 180.0) #define RAD_TO_DEG(rad) ((rad) * 180.0 / PI) +#define DEG_TO_RAD32(deg) ((deg) * PI32 / 180.0) +#define RAD32_TO_DEG(rad) ((rad) * 180.0 / PI32) #define for_range_named(idx, start, end) \ for ( \ diff --git a/src/materials.cpp b/src/materials.cpp index 97aa1c9..4c133a9 100644 --- a/src/materials.cpp +++ b/src/materials.cpp @@ -230,7 +230,9 @@ Material* Materials::get_material_by_name( return material; } } +#if 0 log_warning("Could not find Material with name %s", name); +#endif return nullptr; } diff --git a/src/peony.cpp b/src/peony.cpp index 6b6cf9b..4d174fd 100644 --- a/src/peony.cpp +++ b/src/peony.cpp @@ -90,6 +90,21 @@ void process_input(GLFWwindow *window, State *state) { if (Input::is_key_down(&state->input_state, GLFW_KEY_ENTER)) { state->should_manually_advance_to_next_frame = true; } + + if (Input::is_key_now_down(&state->input_state, GLFW_KEY_1)) { + World::load_scene("data/scenes/coast.peony_scene", state); + Renderer::set_heading(state, "Scene loaded: coast", 1.0f, 1.0f, 1.0f); + } + + if (Input::is_key_now_down(&state->input_state, GLFW_KEY_2)) { + World::load_scene("data/scenes/animtest.peony_scene", state); + Renderer::set_heading(state, "Scene loaded: animtest", 1.0f, 1.0f, 1.0f); + } + + if (Input::is_key_now_down(&state->input_state, GLFW_KEY_0)) { + World::destroy_scene(state); + Renderer::set_heading(state, "Scene destroyed", 1.0f, 1.0f, 1.0f); + } } @@ -243,7 +258,7 @@ int main() { ); Renderer::init_ubo(state); World::init(state); - World::load_scene("data/scenes/demo.peony_scene", state); + /* World::load_scene("data/scenes/demo.peony_scene", state); */ Materials::init_persistent_pbo(&state->persistent_pbo, 25, 2048, 2048, 4); diff --git a/src/renderer.cpp b/src/renderer.cpp index 05efc7d..a41d20e 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -908,9 +908,34 @@ void Renderer::render_scene_ui(State *state) { sprintf(debug_text, state->is_world_loaded ? "yes" : "no"); Gui::draw_named_value(&state->gui_state, container, "is_world_loaded", debug_text); + sprintf(debug_text, "%d", state->materials.length); + Gui::draw_named_value( + &state->gui_state, container, "materials.length", debug_text + ); + sprintf(debug_text, "%d", state->entity_set.entities.length); Gui::draw_named_value(&state->gui_state, container, "entities.length", debug_text); + sprintf(debug_text, "%d", state->model_loaders.length); + Gui::draw_named_value( + &state->gui_state, container, "model_loaders.length", debug_text + ); + + sprintf(debug_text, "%d", state->n_valid_model_loaders); + Gui::draw_named_value( + &state->gui_state, container, "n_valid_model_loaders", debug_text + ); + + sprintf(debug_text, "%d", state->entity_loader_set.loaders.length); + Gui::draw_named_value( + &state->gui_state, container, "entity_loader_set.length", debug_text + ); + + sprintf(debug_text, "%d", state->n_valid_entity_loaders); + Gui::draw_named_value( + &state->gui_state, container, "n_valid_entity_loaders", debug_text + ); + if (Gui::draw_toggle( &state->gui_state, container, "Wireframe mode", &state->should_use_wireframe )) { @@ -962,20 +987,6 @@ void Renderer::render_scene_ui(State *state) { set_heading(state, "Shaders reloaded.", 1.0f, 1.0f, 1.0f); } - if (Gui::draw_button( - &state->gui_state, container, "Destroy materials" - )) { - World::destroy_non_internal_materials(state); - set_heading(state, "Materials destroyed.", 1.0f, 1.0f, 1.0f); - } - - if (Gui::draw_button( - &state->gui_state, container, "Destroy entities" - )) { - World::destroy_non_internal_entities(state); - set_heading(state, "Entities destroyed.", 1.0f, 1.0f, 1.0f); - } - if (Gui::draw_button( &state->gui_state, container, "Delete PBO" )) { diff --git a/src/stackarray.hpp b/src/stackarray.hpp index 4d995fb..0f4453f 100644 --- a/src/stackarray.hpp +++ b/src/stackarray.hpp @@ -54,7 +54,13 @@ public: return &this->items[this->length]; } + void clear() { + memset(this->items, 0, sizeof(this->items)); + this->length = 0; + } + void delete_elements_after_index(uint32 idx) { + memset(&this->items[idx], 0, sizeof(T) * (this->length - idx)); this->length = idx; } }; diff --git a/src/state.cpp b/src/state.cpp index 239e3fd..fe70eef 100644 --- a/src/state.cpp +++ b/src/state.cpp @@ -30,7 +30,7 @@ State* init_state( .shadowmap_far_clip_dist = 200.0f, }; - state->dir_light_angle = PI32 / 4.0f; + state->dir_light_angle = DEG_TO_RAD32(55); state->entity_loader_set = { .loaders = Array( diff --git a/src/state.hpp b/src/state.hpp index c7fb0ed..5dc785f 100644 --- a/src/state.hpp +++ b/src/state.hpp @@ -44,6 +44,8 @@ struct State { bool32 should_limit_fps; bool32 should_use_wireframe; glm::vec4 background_color; + uint32 n_valid_model_loaders; + uint32 n_valid_entity_loaders; bool32 is_world_loaded; diff --git a/src/world.cpp b/src/world.cpp index d4b30c0..20fa546 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -147,9 +147,6 @@ void World::update_light_position(State *state, real32 amount) { for_each (light_component, state->light_component_set.components) { if (light_component->type == LightType::directional) { state->dir_light_angle += amount; - light_component->direction = glm::vec3( - sin(state->dir_light_angle), -cos(state->dir_light_angle), 0.0f - ); break; } } @@ -523,6 +520,11 @@ void World::create_internal_entities(State *state) { } +void World::destroy_model_loaders(State *state) { + state->model_loaders.clear(); +} + + void World::destroy_non_internal_materials(State *state) { for ( uint32 idx = state->first_non_internal_material_idx; @@ -547,17 +549,15 @@ void World::destroy_non_internal_entities(State *state) { Models::destroy_drawable_component( state->drawable_component_set.components[idx] ); - memset(state->entity_set.entities[idx], 0, sizeof(Entity)); - memset(state->light_component_set.components[idx], 0, sizeof(LightComponent)); - memset(state->spatial_component_set.components[idx], 0, sizeof(SpatialComponent)); - memset(state->drawable_component_set.components[idx], 0, sizeof(DrawableComponent)); - memset(state->behavior_component_set.components[idx], 0, sizeof(BehaviorComponent)); } state->entity_set.next_handle = state->entity_set.first_non_internal_handle; state->entity_set.entities.delete_elements_after_index( state->entity_set.first_non_internal_handle ); + state->entity_loader_set.loaders.delete_elements_after_index( + state->entity_set.first_non_internal_handle + ); state->light_component_set.components.delete_elements_after_index( state->entity_set.first_non_internal_handle ); @@ -570,12 +570,26 @@ void World::destroy_non_internal_entities(State *state) { state->behavior_component_set.components.delete_elements_after_index( state->entity_set.first_non_internal_handle ); + state->animation_component_set.components.delete_elements_after_index( + state->entity_set.first_non_internal_handle + ); +} + + +void World::destroy_scene(State *state) { + destroy_model_loaders(state); + destroy_non_internal_materials(state); + destroy_non_internal_entities(state); } + void World::load_scene( const char *scene_path, State *state ) { + // Destroy everything first! + destroy_scene(state); + // Get some memory for everything we need MemoryPool temp_memory_pool = {}; @@ -685,10 +699,12 @@ bool32 World::check_all_entities_loaded(State *state) { } } + uint32 new_n_valid_model_loaders = 0; for_each (model_loader, state->model_loaders) { if (!Entities::is_model_loader_valid(model_loader)) { continue; } + new_n_valid_model_loaders++; bool is_done_loading = Models::prepare_model_loader_and_check_if_done( model_loader, &state->persistent_pbo, @@ -700,11 +716,14 @@ bool32 World::check_all_entities_loaded(State *state) { are_all_done_loading = false; } } + state->n_valid_model_loaders = new_n_valid_model_loaders; + uint32 new_n_valid_entity_loaders = 0; for_each (entity_loader, state->entity_loader_set.loaders) { if (!Entities::is_entity_loader_valid(entity_loader)) { continue; } + new_n_valid_entity_loaders++; ModelLoader *model_loader = state->model_loaders.find( [entity_loader](ModelLoader *candidate_model_loader) -> bool32 { @@ -714,7 +733,11 @@ bool32 World::check_all_entities_loaded(State *state) { ); } ); - assert(model_loader); + if (!model_loader) { + log_fatal( + "Encountered an EntityLoader for which we cannot find the ModelLoader." + ); + } bool is_done_loading = Models::prepare_entity_loader_and_check_if_done( entity_loader, @@ -726,10 +749,22 @@ bool32 World::check_all_entities_loaded(State *state) { &state->behavior_component_set, &state->animation_component_set ); + + // NOTE: If a certain EntityLoader is complete, it's done everything it + // needed to and we don't need it anymore. + if (is_done_loading) { + // TODO: We need to do this in a better way. We should somehow let the + // Array know when we delete one of these. Even though it's sparse, + // it should have length 0 if we know there's nothing in it. That way + // we don't have to iterate over it over and over. + memset(entity_loader, 0, sizeof(EntityLoader)); + } + if (!is_done_loading) { are_all_done_loading = false; } } + state->n_valid_entity_loaders = new_n_valid_entity_loaders; return are_all_done_loading; } @@ -760,6 +795,7 @@ void World::update(State *state) { &state->light_component_set, &state->spatial_component_set, state->t, - state->camera_active->position + state->camera_active->position, + state->dir_light_angle ); } diff --git a/src/world.hpp b/src/world.hpp index 81378f6..e104e9a 100644 --- a/src/world.hpp +++ b/src/world.hpp @@ -22,8 +22,10 @@ namespace World { ); void create_internal_materials(State *state); void create_internal_entities(State *state); + void destroy_model_loaders(State *state); void destroy_non_internal_materials(State *state); void destroy_non_internal_entities(State *state); + void destroy_scene(State *state); void load_scene(const char *scene_path, State *state); void init(State *state); bool32 check_all_entities_loaded(State *state);