#228 posted by Lunaran on 2015/12/12 00:59:20
I added to my privately hacked tyrlite branch a "domelight" (this was pre-sunlight2), with control over color and intensity coming from straight up, the horizon, and straight down, blending between them (even though I'm not really working on a map that would take advantage of that.)
There's enough ways to light a world from the sky that moving stuff like this from infinitely numbered worldspawn keyvalues to a light_sun entity would be prudent, except for the "no spawn func" errors it would produce. Does stripping an entity from the bsp seem dangerous or counter to some method of production? How often do people really re-light a BSP without re-BSPing it first?
#229 posted by metlslime on 2015/12/12 01:15:13
info_null is ignored by the game engine, so you could have an info_null full of sun properties.
But is it really better than just putting it on the worldspawn?
Put Them In A Light Entity
#230 posted by Kinn on 2015/12/12 01:30:02
and flag it with a special key (eg _sun: 1) to tell light.exe that this is just your holder for the sun properties and not a normal light
classname: light
_sun: 1
_some_cool_sun_property: 21.463
I have spent maybe 2 seconds thinking about this, so there may be a better way.
#231 posted by Kinn on 2015/12/12 02:00:12
is it really better than just putting it on the worldspawn?
Just feels cleaner to keep the sun properties encapsulated in a single dedicated entity that you can copy 'n' paste between maps easily.
Also, getting a bit carried away with this...but with a sun as its own entity - you could support multiple suns by having multiple entities.
One More And I Will Shut Up
#232 posted by Kinn on 2015/12/12 02:07:32
To make setting the sun angle easy you could just target your sunlight entity towards an info_null, to implicitly specify the direction of the light (the setup would look like a cute little solar system)
#233 posted by adib on 2015/12/12 02:33:08
Multiple sun entities instead of _sunlight2, _sunlight3, etc?
Lun
#234 posted by ericw on 2015/12/12 03:04:24
Cool, blending the colors/intensity was something I wanted to try and will probably test out. control for the horizon is a good idea too.
If I'm going to add a new, tidier way to specify sun settings, I would be tempted to do it properly and make new entity types (light_dome for _sunlight2/3, light_sun for regular sunlight), and then strip them out when writing the bsp. Even the way surface lights are currently specified is sort of a hack, it should be a "light_surface_template" classname or something.
If anything is being stripped when light writes the entities to the bsp, it might make sense to make the light tool read entities from the .map file rather than the bsp, this would avoid a failure in case you ran "light" twice in a row. It would also mean you can skip the "qbsp -onlyents" when iterating on lighting settings, which could save a few seconds.
#235 posted by Lunaran on 2015/12/12 05:54:20
with a sun as its own entity - you could support multiple suns by having multiple entities.
This is what I was thinking. Although, as someone with experience lighting a map with a fuckload of suns, beyond a very limited point (like two or three, which we have now) the line between imperceptibly subtle and clownishly gaudy seems to get pretty narrow.
#236 posted by necros on 2015/12/12 06:42:57
i'd like to have the ability to map lightstyles to sunlights... then you could have 4 'suns' that are always off, and flicker them randomly via QC.
#236
#237 posted by mankrip on 2015/12/12 06:56:47
Yes! For thunder & lightning effects!
Yeah
#238 posted by ericw on 2015/12/12 08:05:47
that would be sweet. I think it's easy to do in terms of the lighting code, the only challenge is how to expose it to QC. That's probably another argument for using entities for sunlight, it could work the same as ordinary lights; if the mapper sets "targetname" on the sunlight entity, the compiler assigns it a lightstyle.
#239 posted by Lunaran on 2015/12/12 09:49:29
I tried lightning tied to a skybox change a while ago, but every engine's got its own console command for the skybox and they're not consistent :/
You'd hit that 'max lightstyles for a face' limit quick though.
#240 posted by Spike on 2015/12/12 09:59:55
yay for shadowmaps and rtlights...
#241 posted by JneeraZ on 2015/12/12 10:31:42
Moving all features that affect the world into entities would be neat.
"sky_fog" entity or something for easily copying fog between maps, etc...
#242 posted by mankrip on 2015/12/12 13:28:03
Suggestion: use the classname "info_world".
#243 posted by mankrip on 2015/12/12 13:31:50
And "info_world_sun", "info_world_fog", etc. in case of different entities for different features. Just to make it clear that such entities are global effects, not local effects.
When are we getting phong shading?! WHEN?!
Fifth
#245 posted by mankrip on 2015/12/12 13:57:46
If EricW doesn't implement it, I will.
But a proper implementation will most likely require surface flags (or, more specifically, surface groups), and the actual algorithm may not be Phong shading, but something that looks similar. There are a number of design issues to consider.
This is one of the features that I've been thinking about during this whole year, and it's not simple.
#246 posted by adib on 2015/12/12 14:32:09
And when are we having radiosity? Oh Lord, when? I wonder...
Well
for organic geometry how about something like "func_detail2" or "func_group2"? Something outside the regular thing that just applies it to a whole brush?
I know it would be more ideal to apply it to surfaces but I would love to see something, *ANYTHING*, in the mean-time.
#247
#249 posted by Kinn on 2015/12/12 14:46:58
better to have a key:val on any func entity
e.g.
_smoothangle: 15
That way you can control which faces get smoothed based on angle.
I would be all in favour of Quake 2 style surface flags... I know it's introducing a new format for Q1 but at this point does it matter?
#251 posted by Kinn on 2015/12/12 15:01:13
I would be all in favour of Quake 2 style surface flags... I know it's introducing a new format for Q1 but at this point does it matter?
You have to think about compatibility with editors like netradiant that are no longer being updated.
#247
#252 posted by mankrip on 2015/12/12 15:26:00
This would create yet another legacy feature that would become redundant and require extra work to avoid conflicts and retain compatibility with.
Plus, most of the work I need to do before developing my approach is to implement a bunch of BSP debugging features in the engine, in order to analyze and tweak things properly without blind trial and error. The smoothing algorithm itself shouldn't require much time afterwards.
|