CSE4MOD Lighting Paul Taylor 2009 Textures need Lights Lights need Textures One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them -Does this need context to be awesome?- OpenGL /DirectX Light Types Point Spotlight Ambient Distant Point home.elka.pw.edu.pl/.../general/General.html Spot home.elka.pw.edu.pl/.../general/General.html Ambient (Area) home.elka.pw.edu.pl/.../general/General.html Distant (Sun / Moon) home.elka.pw.edu.pl/.../general/General.html Specular Reflection • Specular – The more specular a surface, the move light is reflected very closely to the angle of reflection – A mirror is a near perfect Specular Surface http://www.indigorenderer.com/j oomla/forum/files/specular_mat erial_test_01_168.jpg Diffuse Reflection (Lambertian reflection) http://torcode.com/ http://www.glenspectra.co.uk/SiteResources/Data/Templates/1product.asp?DocID=389&v1ID= Emissive • It Glows! http://www.gennetten-concreteartist.com/dnetwork.html Translucent Surfaces Too Hard Basket!!! http://www.trinity3d.com/product.p hp?productid=1572&cat=293&page= 2 http://www.nondot.org/sabre/Proje cts/Raytracer/ Great so light is stupid complex! Good lighting is dependant on the reflections and behaviours of surfaces This means we can not just use simple textures that are coloured to look good We need to be able to define the behaviours of our objects We need to define the materials they are made of Materials • For OpenGL to calculate the lighting correctly your surfaces (Polygons) need to have their material properties set. • There are five Variables you will need to consider: – – – – – Shininess Exponent Emission (4x Floats rgba) Specular (4x Floats rgba) Diffuse (4x Floats rgba) // Diffuse sets the alpha trans! Ambient (4x Floats rgba) Lighting in 2k4 How many lights does DirectX 9 support? OpenGL 2.0? Here’s the lighting in a 2k4 Level So how many lights?? 8 Wow! How do so many appear in game? There are 2 common ways to increase the lighting in a rendered scene: Baked in Lighting Multi-Pass Rendering Multi-Pass • Only 8 lights can be used per render • Using the accumulation buffer we can store a frame and blend it with the next frame • By doing an additive combine we can add the lighting from both sets of lights to the scene Baked In • This type is pre-calculated – As you have seen when you build a level • All the ‘light’ is stored in textures called light maps Lighting in 2k4 • There are 2 light groups – Dynamic – Static Light Properties • Colour – Brightness, Hue & Saturation ~= RGB – All range 0-255 (Brightness can exceed this limit) • Radius – The max distance a light may affect. • LightType is redundant (From the Unreal1 Era) – Lights will default to LT_Steady – The other light types are now implemented in another UT system called projectors Directional Lights There are a few ways to create these • The Actor Browser – Light->Spotlight / Sunlight – The sunlight actor is a special case, it utilises a surface to emit light from an ‘infinite’ distance • Set the bDirectional property to true – Advanced->bDirectional Light Effects • Lighting->LightEffect • Beware of Animated Effects they only work in UnrealEd!!! The Important ones: • LE_None – Default Constant Falloff • LE_NonIncidence – Sharper Falloff • LE_QuadraticNonIncidence – Super Sharp Falloff Rebuild Often • As soon as you relocate a light the shadows are removed until you rebuild • Use the lights only button when you are not moving geometry around Surface Properties (F5) • This is where you get to tweak all of your settings for texturing and light mapping • Inside the Pan/Rot/Scale Tab you will find Light Map: Light Map Size • This is the detail level of your light map. – 1 is the most detailed – 256 the least detailed – Higher detail creates sharper shadows!!! Static Meshes • Static Meshes are really bad at receiving shadows as they do not share the light maps used in the Unreal Engine – Surfaces are either Lit or Unlit, no graduation! • Static Meshes are good at casting shadows – So try to avoid casing shadows onto static meshes, instead let the static mesh cast a shadow onto the BSP Geometry Terrain Behaviour • Terrain light maps are stored separate to the BSP Geometry • Stored as a birds-eye view texture. Particles • Particles receive no light – Except for Mesh Emitters which receive very basic lighting as per static meshes Selective Lighting If Lighting->bSpecialLit is set a light will only affect surfaces that also have bSpecialLit set to true Improving your workflow • Scaling lights – Literal value Light += value – Percentage Light *= percentage Making Actors Emit Light • Any Static Mesh can emit light but you need to do a few alterations: • Set bShadowCast to false so light will exit the mesh without becoming a shadow • Set bUnlit to true so the mesh will not decide that it is in shadow and turn black Adding Coronas to Lights • This is as simple as adding a skin to your light that resembles a corona. • You’ll need to open Coronas.utx • Navigate to Display->Skins click add then click use to get the corona added to your light. • You can scale the Corona using DrawScale3D with the X and Y values Two types of Dynamic Light • TriggerLight – These guys are set up to be triggered • Plain Old Dynamic – Poor trigger abilities Projectors Replace Dynamic Lights for almost all uses They reduce the dependence on hardware lighting, by replacing the lighting with projected textures Projectors are both faster and better looking Projected textures interact with animated objects too!!! Think of them as little Cameras • We take the camera, load in image into it and point it at a surface • But how do we make an animated projector? Next Week Texturing and Materials
© Copyright 2026 Paperzz