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!


Amazing! Well done! Very needed.


This is great! Thank you Klayton!

Do you have any Patreon or Ko-Fi page?


No donation page, but thanks for the consideration.


@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!