Defold Rendy

Hi all,

Defold Rendy provides a versatile camera suite and render pipeline in a Defold game engine project.

I logged some of Rendy’s development throughout the past couple weeks in the following thread, so please check it out if you’re interested: New Camera Extension - Progress Updates (and Suggestions?)

While the goal of Rendy was to prove to myself that I could write an entire camera system and render pipeline from scratch, it turned into a project that I hope can provide as many out-of-the-box rendering features for both 2D and 3D games.

Testing every function in several different scenarios was very time consuming, so I am releasing Rendy a bit earlier than expected to potentially get some feedback from the Defold community. No doubt there will be unforeseen issues to fix. I really appreciate the help I’ve received from other Defold members over the years.

Happy Defolding!

26 Likes

Amazing! Well done! Very needed.

3 Likes

This is great! Thank you Klayton!

Do you have any Patreon or Ko-Fi page?

2 Likes

No donation page, but thanks for the consideration.

2 Likes

@WhiteBoxDev I I have a quick question; Is ‘rendy.screen_to_world’ expects vector3?

When I pass the vec3 position it fails, am I missing something?:

local player_pos = go.get_position('/cube')
local player_screen_pos = rendy.screen_to_world(id_rendy, player_pos) 
-- << rendy/rendy.lua:265: argument #-1 contains one or more values which are not numbers: vmath.vector4(nan, nan, nan, nan)

Thank you

In this you are passing a world coordinate into screen_to_world() which probably fails because it is not in the correct coordinate space and will fail the call to is_within_viewport().

I have a related question here.

1 Like

You are right, it doesn’t make sense, but it shouldn’t be a matter since we can pass any vec3 as screen coordinate.

Error is on line 265, so it pass the is_within_viewport()

local player_pos = go.get_position('/cube')
pprint(player_pos) -- << vmath.vector3(-2, 0, 0)
local player_screen_pos = rendy.world_to_screen(id_rendy, player_pos)
pprint(player_screen_pos) -- << nil

Also world_to_screen returns nil if the gameobject is not at 0,0,0. I guess I’m doing something wrong here!