Log In  
Follow
abledbody
Blade3D Teapot Demo
by
abledbody's instrument pack 2
by
Sort Our Ship
by
The Lab Grows prototype
by
able's ECS framework
by

I made this demo to quickly demonstrate how to use Blade3D, a 3D rendering API I'm working on. It doesn't make full use of the API, but it does give you a starting point if you want to make your own projects using (this version of) Blade3D. Hopefully I can make a slightly more comprehensive introduction to the API with full documentation in the near future, but for anyone willing to look at the underlying code, it should be pretty easy to accomplish whatever you need with just this template.

Cart #b3d_teapot-3 | 2024-10-22 | Embed ▽ | License: CC4-BY-NC-SA

Something that isn't included in the template is a .obj to .ptm converter, which is provided here. It expects the .obj to include material references (not the .mtl file itself) and for the mesh to be triangulated.

[ Continue Reading.. ]

19
1 comment



An additional 32 synthesized instruments for your composing pleasure.
#able_ipack_02

5
2 comments



Arrow keys to edit the variables.
Click (and hold, if you like,) to set the target position.

Cart #sod_demo-0 | 2024-07-16 | Embed ▽ | License: CC4-BY-NC-SA
5

If you're just interested in the API, you can grab it here:
[hidden]

local Sod = {}
Sod.__index = Sod

function Sod:update(dt)
	local target_vel = (self.target-self.prev_target)/dt

	self.pos += self.vel*dt

	self.vel += (
		self.target
		+self.k3*target_vel
		-self.pos
		-self.k1*self.vel
	)*dt/self.k2

	self.prev_target = self.target
end

function Sod:config(frequency_rads,damping,response)
	local ifreq = 1/frequency_rads
	self.k1,self.k2,self.k3 =
		damping*ifreq*2,
		ifreq*ifreq,
		response*damping*ifreq
end

function sod(pos,frequency_rads,damping,response)
	local o = {
		pos = pos,
		prev_target = pos,
		target = pos,
		-- In case pos is a vector, or any other arithmetically capable data
		-- type, *0 guarantees we get the zero position of whatever type pos is.
		vel = pos*0,
	}
	setmetatable(o,Sod)
	o:config(frequency_rads,damping,response)
	return o
end

[ Continue Reading.. ]

5
0 comments



A clone of The Sound of Sorting I made just to test and diagnose my QuickSort algorithm.
It may sound a little ridiculous on web, since the array access sounds tend to get lumped together into far fewer frames.

  • Press z to step
  • Hold z to disable step mode
  • Press x to switch sorting algorithm
  • Use up and down to control the number of entries.
  • Use left and right to control the speed.

Cart #sort_our_ship-2 | 2024-07-21 | Embed ▽ | License: CC4-BY-NC-SA
19

19
7 comments



The response to this has been pretty positive, so I'm throwing this demo up here on the forums.
This cart is a prototype for a point and click adventure with pre-rendered 3D graphics and a custom palette.

Cart #the_lab_grows-2 | 2024-05-01 | Embed ▽ | No License
29


Included in this cart are elgopher's require module and snowkittykira's error explorer module

29
6 comments



32 synthesized instruments for your composing pleasure.

#able_ipack_01

If you've got requests for the next instrument pack, let me know!

Instrument names:

00 - Wist
01 - Industrial Guitar
02 - Bell
03 - Industrial Bass
04 - Farout
05 - Closed Hat
06 - Open Hat
07 - Retro Snare
08 - Flat Kick
09 - Dial
10 - Glass Piano
11 - Flute
12 - Vibran
13 - Horn
14 - Grind Pad
15 - Smack Tom
16 - State Approved
17 - Disturbation
18 - Acoustic Snare
19 - Sweep Bass
20 - Bell 2
21 - Tropic Pan
22 - Funky Bass
23 - Crack
24 - Steel Guitar
25 - Saxophone
26 - Anchor
27 - Undercurrent Pad
28 - Sidestick
29 - Pop Bass
30 - Everywhere
31 - True Synth

15
4 comments



I made it as easy to use and as performant as I could. You certainly won't be getting the performance boost normally associated with an ECS, since that particular optimization doesn't exist in picotron, but you'll still get the architecture.

Here's a demo which showcases its use.

Cart #able_ecs-2 | 2024-05-10 | Embed ▽ | License: CC4-BY-NC-SA
5

You can find the latest version and the documentation on github.
https://github.com/abledbody/picotron-ECS-framework/releases/
https://github.com/abledbody/picotron-ECS-framework/blob/main/README.md

5
3 comments



Does what it says on the tin. Lets you see what's eating up your CPU time. If you make an extension to this, I'd love to see it.

API:

profile.enabled(detailed,cpu) Turns on and off profiling tools.
detailed: Whether or not to display results of profile calls.
cpu: Whether or not to display total CPU usage.

profile(name,linger) Starts or stops a profile. Accumulates between profile.draw calls. Extremely cheap when profiling is disabled.
name: Arbitrary display name indicating which profile to start or stop.
linger: Whether or not the profile should linger even if the profile is never called between draws.

profile.draw() Draws profile and CPU information to the screen if they are enabled. Extremely cheap when profiling is disabled.

profile.clear_lingers() Clears any lingering profile information.

Example:

include("profiler.lua")

profile.enabled(true,true)

local frames = 0

function _update()
  profile("_update")

[ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=146421#p)
7
0 comments