CSE4MOD Lecture 8 - Textures Lights and Level Designx

rodscarletΛογισμικό & κατασκευή λογ/κού

14 Δεκ 2013 (πριν από 3 χρόνια και 10 μήνες)

68 εμφανίσεις

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/d
-
network.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