Download

Visible cone for spotlight?

I’m implementing some spotlights. They’re working fine, however there is no visible cone (i mean like god rays).

I see there are some components in SpotLight.uc that look like they should handle the visualization of the cone:



	// Inner cone visualization.
	Begin Object Class=DrawLightConeComponent Name=DrawInnerCone0
		ConeColor=(R=150,G=200,B=255)
	End Object
	Components.Add(DrawInnerCone0)

	// Outer cone visualization.
	Begin Object Class=DrawLightConeComponent Name=DrawOuterCone0
		ConeColor=(R=200,G=255,B=255)
	End Object
	Components.Add(DrawOuterCone0)


However I see no cone.

Any idea what I’m missing? Thanks in advance.

Ok, I have figured it out by setting bRenderLightShafts=true on my spotlight component.

However the light shafts are very intense (and invisible when viewed from behind).

I want to play with the settings of the light shafts, but I see no settings to do so in LightComponent.uc

Any ideas?

scroll down further on LightComponent.uc


/** Everything closer to the camera than this distance will occlude light shafts for directional lights. */
var(LightShafts) float OcclusionDepthRange;

/** 
 * Scales additive color near the light source.  A value of 0 will result in no additive term. 
 * If BloomScale is 0 and OcclusionMaskDarkness is 1, light shafts will effectively be disabled.
 */
var(LightShafts) interp float BloomScale;

/** Scene color luminance must be larger than this to create bloom in light shafts. */
var(LightShafts) float BloomThreshold;

/** 
 * Scene color luminance must be less than this to receive bloom from light shafts. 
 * This behaves like Photoshop's screen blend mode and prevents over-saturation from adding bloom to already bright areas.
 * The default value of 1 means that a pixel with a luminance of 1 won't receive any bloom, but a pixel with a luminance of .5 will receive half bloom.
 */
var(LightShafts) float BloomScreenBlendThreshold;

/** Multiplies against scene color to create the bloom color. */
var(LightShafts) interp color BloomTint;

/** 100 is maximum blur length, 0 is no blur. */
var(LightShafts) float RadialBlurPercent;

/** 
 * Controls how dark the occlusion masking is, a value of .5 would mean that an occlusion of 0 only darkens underlying color by half. 
 * A value of 1 results in no darkening term.  If BloomScale is 0 and OcclusionMaskDarkness is 1, light shafts will effectively be disabled.
 */
var(LightShafts) interp float OcclusionMaskDarkness;

keep in mind god rays will only do so much for you. they have the nice feature of occluding against other objects dynamically, but the effect is only visible when the light is on-screen which really gives it away as a screen-space effect

in my game I use meshes to achieve the effect - https://pbs.twimg.com/media/C9ed89vW0AAoOaZ.jpg:large
I dont get objects dynamically occluding the light shafts, but there’s another upside: I only waste performance on the light shafts when they are visible in my level (as opposed to unreal’s GodRays which being a postprocess, waste performance all the time)

Much the same as Chosker, the mesh enhances the spotlight. Attached to the Glock is particle system with the mesh, so a particle system is another option.

Thanks for the tips guys. I was thinking that maybe a mesh would do the job.