Friday, 12 April 2013

Blog 10: Overview of the course

Overview of the Course

The Intermediate Computer Graphics course was taught by Dr. Andrew Hogue. He has stated that this course was going to be difficult, but any course with Dr. Andrew Hogue was always going to be challenging.

While the Introduction to Computer Graphics, taught by Dr. Richard Pazzi, course did introduce us a little about shaders, this course focused more on how the graphics pipeline works, and how to create lighting, shadow, and other great shader effects using the graphics pipeline.

The content that were taught in this class were:
  • Introduction to course, review of graphics pipeline
  • Intro to Shaders
  • Lighting & Shadows
  • Full Screen Effects/ Post Processing
  • Normal Mapping, Lightmaps
  • Ambient Occlusion
  • Particle systems & post-processing
  • GP-GPU/CUDA
Dr. Andrew Hogue also requested students to tweet him what they are interested in learning. As a result:
  • Deferred Shading
  • Screen Space Ambient Occlusion (SSAO)
  • Godrays
were also taught to the class by Dr. Andrew Hogue.

The tutorials were taught by Daniel Buckstien, a student taking his master's degree. Daniel Buckstien taught the tutorial extremely well. He showed the result of his work on the first tutorial class, and it was amazing. He showed the class dual quaternions, and many other great examples in his programs. He has a thorough knowledge of the concepts and is able to answer and help any students with many problems in their code.

Overall the course is indeed quite deep with lots of concept and detail, but I enjoyed the class with a great professor and a great tutor teaching this course. Both the professor and tutor teaching this course this semester were interesting.

Blog 9: Creating Normal Map Texture in MudBox

Creating Normal Map Texture in MudBox

1) Import in an object you created from Maya under File>Import...

2) Increase the amount of polygons on your mesh by pressing Shift+D or go under Mesh>Add New Subdivision Level. If you do not add more polygons you will get a message tell you to subdivide the mesh into finer polygons.


If you increased the amount of polygons on your mesh it would look similar to this (depending on the stamp you chose):
(increased polygon amount to level 4)

3) Extra the texture map by going under Maps>Extract Texture Map> New Operation. 
4) Once you pressed New Operation a window appears, click on Normal Map. 
5) Once you have clicked on Normal Map your window will expand giving you more options. Under Normal Map Output you can output both tangent space and object space normal maps.
6) Once you have picked either tangent space or object space, click on the folder icon under Output options and choose your destination and name for your texture to be placed.
7) Once you have chosen the name and location, press extract.

And this would be the end result.

Normal Map Texture in Object Space

Normal Map Texture in Tangent Space






Blog 8: GameCon


GameCon

This year at GameCon it took place on April 9th, 2013, from 10am to 5pm. The GameCon this year was held in the UB and ERC buildings. The second and third year students were in the UB building while the first year and fourth year students were in the ERC building. 

This year at GameCon also had a few problems. One of the problems this year had was the amount of space. It was hard to wonder around with many game dev. students, profs., visitors, and other students just walking around. There was also a similar problem from last year's GameCon and this year's GameCon. Last year there were not enough outlets for a couple of student's laptop; making some students share an outlet once in a while. This year there were enough outlets, but the power outlets were not working; resulting in students not having enough battery for their laptops to sustain.



This year I was glad I had a much better team. Not only did we win the best tech. award, I was able to wonder around and look at the other groups' games. Last year I was unable to wonder around a lot due to the fact that half my group never bother showing up to GameCon despite it being a mandatory event.

I was really surprised by this year's games that were created. A lot of the first year games were really well done especially the game "BITS", which was a four-person multi-player game like Super Smash Bros. I was also really impressed that the third year game "Red Dawn" won three awards. 

Overall I think this was a really successful year in terms of the games that were produced by the students.

Thursday, 11 April 2013

Blog 7: Level Up Showcase

Level Up Showcase



This year was the 3rd annual Level Up Showcase event, and my group was able to attend as a participants. My group members and I went to the Level Up Showcase to show our level editor to the public and also a couple of company representatives.This was my first time attending such a life-experience event. There were many other universities and colleges that also attended this event such as:

and many more.

There were many groups showing their game they created to the public, and I was surprised by the amount of people that came to visit.

Though the event was a success, there were problems with the organization prior to the opening of the event. We were told there were going to be high-school students showing around noon, but none of them showed up. It took hours for the booths to be set-up and the free pizza lunch was delayed by 2-3 hours. I was also disappointed on how some of the groups using the Unity, CryEngine, and UDK had very little content in them despite having a good engine.

Overall I had a great time at the convention with my group members and other groups from UOIT GameDev.


Blog 6: Edge Detection

Edge Detection

What is Edge Detection?

Edge detection is used to identify where the edges are on the objects. Edge detection can be used to help people find certain objects by highlighting the object to attract their attention. Edge detection can also be used to tell people what they have highlighted over a scene. 

Sobel Edge Detection?

The Sobel edge detection looks for any changes in data for the depth and normal. This is done twice for both the depth and the normal, once for horizontal detection and once for the vertical. 

The Sobel method you take a pixel and check the pixels next to it. For the vertical check you would only check the pixels on the left and right side, while the horizontal check you would only check the pixels on the top and bottom. If there is no change in the data it would output a 0, but if there is change in the pixels around it would output a 1 for the corner and a 2 for the adjacent. 

After checking all the pixels to find any change in the normal and depth, you would need to combine sobel horizontal and vertical for the normal and depth to get an edge detection.




Blog 5: Toon Shading

Toon Shading

What is Toon Shading?

Toon shading is also known as Cel shading. Toon shading is a type of non-photorealistic rendering technique used in games to make it look like a cartoon.


How does Toon Shader differ?

Normally the shading on an object would be a gradual linear line representing the light intensity as shown. This type of shading would make an object look smooth.
However, for toon shading the graph would look a step function. This type of shading would make an object look more cartoon and hand-drawn.

If follow this graph and use the concept for light intensity, you would have a blocky grayscale.


Using this to sample would give you a toon shading effect.











Blog 4: Bloom

Bloom

What is Bloom?

Bloom is a shader effect to show the intensity of the light coming from the scene. Bloom is a post-processing technique used to make the scene brighter and create a warmer atmosphere to the scene. 

Steps To Create a Bloom Effect in Photoshop

1) Load an image and create a copy of that layer.
2) Blur the copied image using Box Blur or Gaussian Blur with large value by going to Filter>Blur>Box Blur or Gaussian Blur.
3) Increase the brightness and reduce the contrast on the blurred image. You can change the brightness and contrast by going to Image>Adjustments>Brightness/Contrast.
4) Add both images together by going to your "Layers" tab and change the blending mode for the blurred layer. You should change the blending mode for the blurred image from "Normal" to "Screen".

Original Image

Bloomed Image


This website below shows you the steps and more different results with bloom.

Blog 3: Lighting

Lighting

What is Lighting used for?               

In-game lighting can change and create a different atmosphere of the area that is being lit. Simulating lights the the game can make the objects and the scenes more realistic rather than being stale and plain. Lighting can be used to draw attention to a certain object, person or scene.

Types of Lights

Specular Light

Specular light is the bright spot of the light that appears to make the object shiny. Specular light in computer graphics help make the 3D object look more realistic by giving the object a more reflective look. The specular light is used to determine the intensity by calculating the reflected light ray and the camera location.

Ambient Light

Ambient light is the amount of lighting in the scene. Ambient light is a soft indirect light that softens shadows and fills the scene with illumination. Ambient light is mainly used to provide the scene with a basic view of different objects.

Diffuse Light

Diffuse light is light that fills up the remaining area of the object or scene that the specular light does not hit. 


Emissive Light

Emissive light is a light that is emitting from an object in the scene. The emissive light is used to help make your objects or scene to be more realistic. Without emissive lights your objects or scene could look plain.

Per-Face vs. Per-Vertex vs. Per-Pixel

Per-Face

Per-Face lighting is calculating the amount of light that is hitting the object per face. The light intensity changes per face, making the object look blocky and rough. 

Per-Vertex

Per-Vertex lighting calculates the light that hits per-vertex. Next, it interpolates between the vertices and taking the average of lighting between each vertex.

Per-Pixel

Per-Pixel lighting calculate the light that hits per-pixel. Per-pixel lighting has the best result of the 3 because the program has more information to work with; resulting in giving the object a sharper look.





Blog 2: Introduction to Shaders

Introduction to Shaders

What are Shaders?

Shaders are a set of software instructions used primarily to calculate rendering effects on the graphics hardware. Shader is a computer program that runs on the graphics processing unit (GPU), and it is used to do shading, lighting, special effects and post-processing.

Types of Shaders

Vertex Shader

The vertex shader runs once for each vertex given to the graphics processor. The purpose of the vertex shader is to transform each vertex's 3D position to the 2D coordinate that appears in the screen. The vertex shader can manipulate properties such as position, colour and texture coordinates.

Geometry Shader

The geometry shader can generate new graphics primitives such as points, lines, and triangles. The geometry shader is written in OpenGL Shading Language (GLSL). The geometry shader can specifically say that a primitive is to be rendered to a certain layer in the framebuffer.

Fragment Shader

The fragment shader is also known as the pixel shader. The fragment shader is used to compute colour and other attribute of each fragment. The fragment shader is where most effects are done in. The fragment shader  is used to do colour, lighting, bump mapping, shadow mapping, and many other effects. The fragment shader can modify the depth of the fragment.


Graphics Pipeline