Skip to content

Commit

Permalink
feat: dynamic lights (#234)
Browse files Browse the repository at this point in the history
* Initial draft of LightSource component

* Fixed conflicting ids

* Refactor structure

* Fixed ids

* Removed unused property and adjusted ids again

* Fixed color reference

* Fixed lowecase to oneof name

* Test to fix proto builds

* Renamed file to properly generate classes with the intended name

* Updated documentation

* Added cookie field

* Added missing import

* Fixed proper type reference

* Set optional properties, improved documentation

* Updated shadow mask type to TextureUnion

* Reordered properties to support different defaults on different messages
  • Loading branch information
AlejandroAlvarezMelucciDCL authored Feb 4, 2025
1 parent b3fea33 commit 5fbeb3c
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions proto/decentraland/sdk/components/light_source.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
syntax = "proto3";
package decentraland.sdk.components;
import "decentraland/sdk/components/common/id.proto";
import "decentraland/common/colors.proto";
import "decentraland/common/texture.proto";
option (common.ecs_component_id) = 1079;

message PBLightSource {
optional bool active = 4; // default = true, whether the lightSource is active or not.
optional decentraland.common.Color3 color = 1; // default = Color.white, the tint of the light, in RGB format where each component is a floating point value with a range from 0 to 1.
optional float brightness = 2; // default = 250, ranges from 1 (dim) to 100,000 (very bright), expressed in Lumens for Point and Spot.
optional float range = 3; // default = 10, how far the light travels, expressed in meters.

oneof type {
Point point = 6;
Spot spot = 7;
}

message Point {
optional ShadowType shadow = 5; // default = ShadowType.ST_NONE The type of shadow the light source supports.
}

message Spot {
optional float inner_angle = 1; // default = 21.8. Inner angle can't be higher than outer angle, otherwise will default to same value. Min value is 0. Max value is 179.
optional float outer_angle = 2; // default = 30. Outer angle can't be lower than inner angle, otherwise will inner angle will be set to same value. Max value is 179.
optional ShadowType shadow = 5; // default = ShadowType.ST_NONE The type of shadow the light source supports.
optional decentraland.common.TextureUnion shadow_mask_texture = 8; // Texture mask through which shadows are cast to simulate caustics, soft shadows, and light shapes such as light entering from a window.
}

enum ShadowType {
ST_NONE = 0; // No shadows are cast from this LightSource.
ST_SOFT = 1; // More realistic type of shadow that reduces block artifacts, noise or pixelation, but requires more processing.
ST_HARD = 2; // Less realistic type of shadow but more performant, uses hard edges.
}
}

0 comments on commit 5fbeb3c

Please sign in to comment.