Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(flame_3d): Make shader api more useful #3085

Merged
merged 3 commits into from
Jul 22, 2024

Conversation

wolfenrain
Copy link
Contributor

@wolfenrain wolfenrain commented Mar 19, 2024

Description

BIG WIP

Checklist

  • I have followed the Contributor Guide when preparing my PR.
  • I have updated/added tests for ALL new/updated/fixed functionality.
  • I have updated/added relevant documentation in docs and added dartdoc comments with ///.
  • I have updated/added relevant examples in examples or docs.

Breaking Change?

  • Yes, this PR is a breaking change.
  • No, this PR is not a breaking change.

Related Issues

luanpotter added a commit that referenced this pull request Apr 27, 2024
Fix minor nits on flame_3d, namely:

* fix wrong bash command on the readme file
* add missing git ignore to the example

This was extracted directly from @wolfenrain 's [bigger
PR](#3085), making it easier
to merge later.
luanpotter added a commit that referenced this pull request Apr 27, 2024
Add helpful extension functions to Vector classes, including tests.

This was extracted directly from @wolfenrain 's [bigger
PR](#3085), making it easier
to merge later.
@luanpotter luanpotter force-pushed the feat(flame_3d)-make-shader-api-more-useful branch from 4e9f73c to 82083c3 Compare April 27, 2024 21:39
@luanpotter luanpotter marked this pull request as ready for review June 4, 2024 01:51
@Jennaellly
Copy link

I can't wait for this

@luanpotter luanpotter force-pushed the feat(flame_3d)-make-shader-api-more-useful branch from 085f037 to db1465f Compare July 9, 2024 01:39
@luanpotter luanpotter force-pushed the feat(flame_3d)-make-shader-api-more-useful branch from db1465f to a15f851 Compare July 9, 2024 23:14
Implement a basic light abstraction.

Still only supports one light for now, and no parameters other than its
position.
Note: I will fix the 0-lights case when I add support for multiple
lights.

A few complications arose that led me to revamp our component system a
bit. Basically splitting the `Component3D` class into a more fundamental
version of itself that only includes the 3D positioning stuff, and none
of the rendering stuff, and what used to be `Component3D` becomes
`Object3D` (I am not sold on the names, feel free to suggest
replacements).

I also added a `Group3D` class to allow for people to create groups of
components without carrying the rendering code. Of course you can still
add children to Object3D as well. I am open to removing it and just
making `Component3D` concrete instead.

The image below explains the new structure:


![image](https://github.com/flame-engine/flame/assets/882703/6dcb408c-10ea-4b67-b4fc-d760a1d91ea0)

---

The difference between the 3 "light" classes:

* `LightComponent` → interacts with FCS. is Component3D, thus carries
the position
* `LightSource` → describes the light in abstract terms (minus
position). used both by `LightComponent` and `Light`
* `Light` → base description of a Light as a Resource. FCS agnostic.
includes properties (source) + position

Again, I am open to any renames.

---

## FAQ

#### why separate component3d and object 3d?

not really needed but I didn't want light component to "carry" the
rendering code that is not used. that also makes the distinction more
clear as objects are completely different than lights. that way we don't
have to have a definition of "non-light objects/components"

#### ~why do we need group3d?~

i removed group3d!

~again not really needed, you can add children to objects, but if you
want a pure container (no rendering), this would make more semantic
sense. other options would be to not have anything (tell people to group
things using object3d) or make component3d concrete (tell people to use
that). having group3d consolidates the separation of light as its own
thing.~

#### why some classes end in 3D and some classes end in Component

[answer](https://martinfowler.com/bliki/TwoHardThings.html) (please
help)
@luanpotter luanpotter merged commit c9cf609 into flame_3d Jul 22, 2024
3 of 8 checks passed
@luanpotter luanpotter deleted the feat(flame_3d)-make-shader-api-more-useful branch July 22, 2024 20:25
luanpotter added a commit that referenced this pull request Jul 23, 2024
Fix minor nits on flame_3d, namely:

* fix wrong bash command on the readme file
* add missing git ignore to the example

This was extracted directly from @wolfenrain 's [bigger
PR](#3085), making it easier
to merge later.
luanpotter added a commit that referenced this pull request Jul 23, 2024
Add helpful extension functions to Vector classes, including tests.

This was extracted directly from @wolfenrain 's [bigger
PR](#3085), making it easier
to merge later.
luanpotter added a commit that referenced this pull request Jul 23, 2024
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
luanpotter added a commit that referenced this pull request Jul 27, 2024
Fix minor nits on flame_3d, namely:

* fix wrong bash command on the readme file
* add missing git ignore to the example

This was extracted directly from @wolfenrain 's [bigger
PR](#3085), making it easier
to merge later.
luanpotter added a commit that referenced this pull request Jul 27, 2024
Add helpful extension functions to Vector classes, including tests.

This was extracted directly from @wolfenrain 's [bigger
PR](#3085), making it easier
to merge later.
luanpotter added a commit that referenced this pull request Jul 27, 2024
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants