The RQ presentations were on Friday. I don't think my presentation was that great, I'm a terrible public speaker, but I didn't faint or die or get pelted with rotton tomatoes so in some respects it was a success. Some of the other presentations were pretty interesting though. And certainly better presented than mine. XD
In the interests of completeness here is my slide show for the presentation - Dynamic Ambient Occlusion
Also, I have finally got my hands on that ShaderX7 book since Peter Mitchell was nice enough to lend it to me (Thanks ^^) and there are loads of ambient occlusion chapters. It may even contain the secrets of the universe, it's certainly thick enough.
ttfn
Wednesday, 24 November 2010
Worksheet 4
Introduction
What is the topic and aim of the project?
The topic being looked at for this project is dynamic ambient occlusion in computer games. The aim is to determine the best method for rendering real time AO in a cost effective manner, while at the same time extending it to simulate indirect lighting as well.
Issues
What issues do you want to address?
Probably the main issue to look at will be keeping costs down, since the ambient occlusion will be utilised in applications that already have lighting, shadows, dynamic objects and user interaction, it can't have too great an impact on the framerate. But keeping a balance between the efficiency and the quality will also be important - SSAO can produce noisy output which isn't ideal.
Being able to deal with hidden geometry will also be something to adresss, as SSAO doesn't take into account hidden geometry, especially that outside the camera frustrum.
And of course, adding indirect lighting into the ambient occlusion algorithm, so that global illumination can be better approximated. The two things are closely related so it is a logical step.
Research question
What is your current research question?
What are the best solutions to rendering dynamic ambient occlusion in computer games and how can they be improved/expanded upon to better approximate global illumination?
Addressing the Question
How do you envisage yourself carrying out the project? - a short exposition of the project.
1. I will look at many different variations of the SSAO algorithm to determine the best way to approach the various problems associated with the method. I've found quite a number of papers and resources on the subject - different techniques solve different issues. I will also look at the newer technique of ambient occlusion volumes (AOV) which I recently found on Nvidia's site, as a potential alternative to SSAO.
2. I will create a 3D application which simulates a game environment, including things such shadows, lighting, dynamic objects and a user controlled camera. Initially I will test a few different methods of AO and then eventually narrow it down to one technique (which may be an amalgamation of more than one method) which I will then attempt to optimise and expand to include indirect lighting.
3. Performance will be measured - using the frame-rate, how many passes are needed, etc - with and without the AO in the scene. Graphical quality will need to be measured with the naked eye.
Progress
What have you managed to do so far and how has it influenced your vision?
So far it has all been just research. I've been trawling the web and the library for ambient occlusion resources and found quite a lot of research material. I haven't read everything I've found (though I've skimmed through most)...but I have been trying to get through it, and take notes. I've been looking at static ambient occlusion methods as well, so I can get a wider view of the topic and hopefully a fuller understanding of the theories behind it. My vision has been influenced in a small way by some of the things I've found - i.e. the paper on
SSDO: Approximating Dynamic Global Illumination in Image Space - made me think about expanding AO into indirect lighting, thus changing my RQ slightly.
Wednesday, 10 November 2010
Research Links #3
Online:
Ambient Occlusion in Screen-Space
D3DBook:Screen Space Ambient Occlusion
Accumulative Screen Space Ambient Occlusion
Video Examples:
Screen Space Global Illumination
SSAO final, aka Screen space ambient occlusion
SSAO and Deferred shading in XNA/HLSL
SSAO - Statistical Optimally Distributed Sample Technique
Screen Space Global Illumination
Ambient Occlusion in Screen-Space
D3DBook:Screen Space Ambient Occlusion
Accumulative Screen Space Ambient Occlusion
Video Examples:
Screen Space Global Illumination
SSAO final, aka Screen space ambient occlusion
SSAO and Deferred shading in XNA/HLSL
SSAO - Statistical Optimally Distributed Sample Technique
Screen Space Global Illumination
Small Update
I met with Matt Bett again today, as I was slightly unsure about my research question and about the practical aspecty of the project.
RQ-wise, it's all good. I could definitley reword my RQ so that it's more succinct/less wordy but my leaning towards expanding AO techniques to better approximate global illumination is good.
As to the practical side of the project - I had been playing with the idea of implementing a proper global illumination effect in my app to compare the AO effect with but Matt said that would be hard and time consuming...particularly for a complex scene, and it was enough to just judge the AO effect by itself. *Inward sigh of relief*
***
Research wise - I'm good at finding research material but unfortunately not so good at sitting down and making myself read/absorb it properly. I have made a start though, and I intend to read and take notes from, at least one resource every day. I will then put my notes up on the blog...if I can read my writing.
RQ-wise, it's all good. I could definitley reword my RQ so that it's more succinct/less wordy but my leaning towards expanding AO techniques to better approximate global illumination is good.
As to the practical side of the project - I had been playing with the idea of implementing a proper global illumination effect in my app to compare the AO effect with but Matt said that would be hard and time consuming...particularly for a complex scene, and it was enough to just judge the AO effect by itself. *Inward sigh of relief*
***
Research wise - I'm good at finding research material but unfortunately not so good at sitting down and making myself read/absorb it properly. I have made a start though, and I intend to read and take notes from, at least one resource every day. I will then put my notes up on the blog...if I can read my writing.
Wednesday, 3 November 2010
RQ Workshop
This is a workshop we had to do in last week's lecture. I thought it would be a good idea to put my answers up on the blog so I have a good record of them.
Are you Focused?
Common Sense?
I would keep backups on my university account, but I've been having problems saving stuff to it as it claims that ther's no room. Once I get that sorted I will keep backups on there too.
Do you know what you are doing?
Are you Focused?
- What is the name of this module, how many credits?
- Your technical supervisor, how many times have you met?
- What other module is associated with the honours project, how many credits?
- How frequently do you update your blog?
- Have you included both your worksheets in your blog, with/out annotations/feedback?
- Have you included in your blog the resources you have found and read/reading through your literature resources?
Common Sense?
- Have you subscribed to any game related forum and posted your RQ, research ideas and got feedback?
- What back up procedures have you implemented?
I would keep backups on my university account, but I've been having problems saving stuff to it as it claims that ther's no room. Once I get that sorted I will keep backups on there too.
- How long do you spend for your Honours Project activities?
Do you know what you are doing?
- "What" is your RQ?
- "Why" is it important?
- "How" will you answer it?
- "So What" will be: 1. Your measure for success, 2. What will be the significance of what you have done?
Friday, 29 October 2010
Research Resource Links
Since I narrowed down my topic and research question, I've been trawling the web and the library for research material. I found quite a lot of resources that could be useful so in order to keep a good, organised record of them I will list them here on the blog.
Books:
Pharr, M and Green, S. 2004. Chapter 17: Ambient Occlusion. Fernando, R. GPU Gems: Programming Techniques, Tips and Tricks for Real Time Graphics. Addison Wesley. 2004. pp 272-292. [online]. Available online at: http://http.developer.nvidia.com/GPUGems/gpugems_ch17.html [Accessed 18/10/10]
Bunnell, M. 2005. Chapter 14: Dynamic Ambient Occlusion and Indirect Lighting. Fernando, R. GPU Gems 2: Programming Techniques for High Performance Graphics and General Purpose Computation. Addison Wesley. 2005. pp 223-233. [online]. Available online at: http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter14.html [Accessed 18/10/10]
Hoberock, J and Jia, Y. 2007. Chapter 12: High Quality Ambient Occlusion. Nguyen, H. GPU Gems 3. Addison Wesley. 2007/08. pp 257-274. [online]. Available online at: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch12.html [Accessed 29/10/10]
Filion, D. 2010. Chapter 1.2: Principles and Practice of Screen Space Ambient Occlusion. Lake, A. Games Programming Gems 8. Course Technology PTR. 2010. pp 12-31. [online]. Available online at http://my.safaribooksonline.com/9781584507024. [Accessed 18/10/10]
Akenine-Moller, T and Haines, E. 2002. Real-Time Rendering. 2nd ed. USA. A K Peters, Ltd.
In the latest book in the Shaderx series; ShaderX7 there are three or four articles on dynamic ambient occlusion which I feel would be very useful - especially because they are very recent. (ShaderX7 was published this year.) However I haven't been able to locate a copy, either in the library or in ebook form (and at £23 I can't really afford to buy a copy.) I'm going to ask the library if they can do an inter library loan, so hopefully I'll be able to get my hands on a copy at some point.
Online:
Academic Papers:
Video Examples:
Books:
Pharr, M and Green, S. 2004. Chapter 17: Ambient Occlusion. Fernando, R. GPU Gems: Programming Techniques, Tips and Tricks for Real Time Graphics. Addison Wesley. 2004. pp 272-292. [online]. Available online at: http://http.developer.nvidia.com/GPUGems/gpugems_ch17.html [Accessed 18/10/10]
Bunnell, M. 2005. Chapter 14: Dynamic Ambient Occlusion and Indirect Lighting. Fernando, R. GPU Gems 2: Programming Techniques for High Performance Graphics and General Purpose Computation. Addison Wesley. 2005. pp 223-233. [online]. Available online at: http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter14.html [Accessed 18/10/10]
Hoberock, J and Jia, Y. 2007. Chapter 12: High Quality Ambient Occlusion. Nguyen, H. GPU Gems 3. Addison Wesley. 2007/08. pp 257-274. [online]. Available online at: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch12.html [Accessed 29/10/10]
Filion, D. 2010. Chapter 1.2: Principles and Practice of Screen Space Ambient Occlusion. Lake, A. Games Programming Gems 8. Course Technology PTR. 2010. pp 12-31. [online]. Available online at http://my.safaribooksonline.com/9781584507024. [Accessed 18/10/10]
Akenine-Moller, T and Haines, E. 2002. Real-Time Rendering. 2nd ed. USA. A K Peters, Ltd.
In the latest book in the Shaderx series; ShaderX7 there are three or four articles on dynamic ambient occlusion which I feel would be very useful - especially because they are very recent. (ShaderX7 was published this year.) However I haven't been able to locate a copy, either in the library or in ebook form (and at £23 I can't really afford to buy a copy.) I'm going to ask the library if they can do an inter library loan, so hopefully I'll be able to get my hands on a copy at some point.
Online:
Academic Papers:
Forum Discussions:
Video Examples:
Wednesday, 20 October 2010
Worksheet 3 - Draft Proposal
Introduction
The aim of the project is to investigate different methods for calculating and rendering dynamic ambient occlusion. Ambient occlusion is used to generate soft shadows that appear in crevices and corners where the light cannot reach as well as shadows that occur when two objects are in close proximity. These shadows aren't cast by any particular light source but are a product of global illumination. During my preliminary search for reseach material I came across a number of different implementations and variations which I intend to look into in order to determine the solution which provides the best balance of graphical quality and performance. Since the application will be real time, cost effectiveness is a big issue - the ambient occlusion will be working in conjuction with lighting, shadows, dynamic objects and user interaction, so it's impact on the framerate cannot be too high. I would like to look at expanding the most viable ambient occlusion methods so that they provide a better approximation of global illumination/ indirect lighting. Again, the focus must be on keeping costs down but at the same time providing an adequete amount of realism.
Motivation
Simulating realism in computer games is a big issue in the games industry today. As games get more and more realistic, the consumers' graphical expctations are getting higher and higher. When it comes to graphical realism, lighting and shadows are one of the most important factors. But it's not enough to just render shadows cast by light sources - there is ambient lighting to consider as well. Global illumination techniques such as ray tracing and radiosity simulate the effects of light bouncing off surfaces and add more depth and realism to a scene. However, this is very computationally expensive and isn't really suitable for real time applications such as games. Ambient occlusion is far more cost effective and simpler. The results produced by ambient occlusion alone are not enough to simulate GI but it could be expanded to better emulate its results while still keeping costs down.
I've been interested in lighting effects and shaders since third year (a lot of my projects focused on the lighting aspects) and ambient occlusion seemed like an interesting topic to investigate. It's also pretty current. According to an article on ambient occlusion in Games Programming Gems 8 (published this year) indirect lighting/global illumination is still an active area of research so I felt it would be a good topic to look at in that respect as well.
Research Question
What are the solutions to rendering dynamic ambient occlusion in realtime 3D applications (i.e. games) and how can they be improved/expanded upon to better approximate global illumination?
Addressing the Question
In addressing the question, I plan to first research static ambient occlusion, in order to better understand the technique, and hopefully implement a simple demo using static AO in a very simple scene. This will help my understanding of the topic in a practical sense as I find learning by doing is a useful tool. I will also research global illumination techniques and how they calculate indirect lighting. From there I will look into the various methods that are available for implementing dynamic AO and try to implement those that seem the most viable performance wise in a real time app. Once I have these methods working in a game like environment I will identify any graphical or performance issues that they may have and experiment to try and solve them.
In expanding the solutions to better emulate global illumination, there are a number of articles I have found which discuss using AO to render indirect lighting. I will try and implement the solutions they discuss and maybe even expand them through experimentation and research into similar techniques.
(I was also wondering whether I should try and implement a proper global illumination method as a comparision but I'm not sure.)
Resource Requirements
I don't anticipate needing any equipment or software that is not already available to me in the game lab. I will be using Visual Studio 2005 or 2008, and working with the DirectX SDK - probably using DirectX 9.
References and Bibliography
Pharr, M and Green, S. 2004. Chapter 17: Ambient Occlusion. Fernando, R. GPU Gems: Programming Techniques, Tips and Tricks for Real Time Graphics. Addison Wesley. 2004. pp 272-292.
Bunnell, M. 2005. Chapter 14: Dynamic Ambient Occlusion and Indirect Lighting. Fernando, R. GPU Gems 2: Programming Techniques for High Performance Graphics and General Purpose Computation. Addison Wesley. 2005. pp 223-233.
Landis, Hayden. 2002. "Production-Ready Global Illumination." Course 16 notes, SIGGRAPH 2002. [online] Available online at http://spherevfx.com/downloads/ProductionReadyGI.pdf [Accessed 19/10/10]
Filion, D. 2010. Chapter 1.2: Principles and Practice of Screen Space Ambient Occlusion. Lake, A. Games Programming Gems 8. Course Technology PTR. 2010. pp 12-31. [online]. Available online at http://my.safaribooksonline.com/9781584507024. [Accessed 18/10/10]
The aim of the project is to investigate different methods for calculating and rendering dynamic ambient occlusion. Ambient occlusion is used to generate soft shadows that appear in crevices and corners where the light cannot reach as well as shadows that occur when two objects are in close proximity. These shadows aren't cast by any particular light source but are a product of global illumination. During my preliminary search for reseach material I came across a number of different implementations and variations which I intend to look into in order to determine the solution which provides the best balance of graphical quality and performance. Since the application will be real time, cost effectiveness is a big issue - the ambient occlusion will be working in conjuction with lighting, shadows, dynamic objects and user interaction, so it's impact on the framerate cannot be too high. I would like to look at expanding the most viable ambient occlusion methods so that they provide a better approximation of global illumination/ indirect lighting. Again, the focus must be on keeping costs down but at the same time providing an adequete amount of realism.
Motivation
Simulating realism in computer games is a big issue in the games industry today. As games get more and more realistic, the consumers' graphical expctations are getting higher and higher. When it comes to graphical realism, lighting and shadows are one of the most important factors. But it's not enough to just render shadows cast by light sources - there is ambient lighting to consider as well. Global illumination techniques such as ray tracing and radiosity simulate the effects of light bouncing off surfaces and add more depth and realism to a scene. However, this is very computationally expensive and isn't really suitable for real time applications such as games. Ambient occlusion is far more cost effective and simpler. The results produced by ambient occlusion alone are not enough to simulate GI but it could be expanded to better emulate its results while still keeping costs down.
I've been interested in lighting effects and shaders since third year (a lot of my projects focused on the lighting aspects) and ambient occlusion seemed like an interesting topic to investigate. It's also pretty current. According to an article on ambient occlusion in Games Programming Gems 8 (published this year) indirect lighting/global illumination is still an active area of research so I felt it would be a good topic to look at in that respect as well.
Research Question
What are the solutions to rendering dynamic ambient occlusion in realtime 3D applications (i.e. games) and how can they be improved/expanded upon to better approximate global illumination?
Addressing the Question
In addressing the question, I plan to first research static ambient occlusion, in order to better understand the technique, and hopefully implement a simple demo using static AO in a very simple scene. This will help my understanding of the topic in a practical sense as I find learning by doing is a useful tool. I will also research global illumination techniques and how they calculate indirect lighting. From there I will look into the various methods that are available for implementing dynamic AO and try to implement those that seem the most viable performance wise in a real time app. Once I have these methods working in a game like environment I will identify any graphical or performance issues that they may have and experiment to try and solve them.
In expanding the solutions to better emulate global illumination, there are a number of articles I have found which discuss using AO to render indirect lighting. I will try and implement the solutions they discuss and maybe even expand them through experimentation and research into similar techniques.
(I was also wondering whether I should try and implement a proper global illumination method as a comparision but I'm not sure.)
Resource Requirements
I don't anticipate needing any equipment or software that is not already available to me in the game lab. I will be using Visual Studio 2005 or 2008, and working with the DirectX SDK - probably using DirectX 9.
References and Bibliography
Pharr, M and Green, S. 2004. Chapter 17: Ambient Occlusion. Fernando, R. GPU Gems: Programming Techniques, Tips and Tricks for Real Time Graphics. Addison Wesley. 2004. pp 272-292.
Bunnell, M. 2005. Chapter 14: Dynamic Ambient Occlusion and Indirect Lighting. Fernando, R. GPU Gems 2: Programming Techniques for High Performance Graphics and General Purpose Computation. Addison Wesley. 2005. pp 223-233.
Landis, Hayden. 2002. "Production-Ready Global Illumination." Course 16 notes, SIGGRAPH 2002. [online] Available online at http://spherevfx.com/downloads/ProductionReadyGI.pdf [Accessed 19/10/10]
Filion, D. 2010. Chapter 1.2: Principles and Practice of Screen Space Ambient Occlusion. Lake, A. Games Programming Gems 8. Course Technology PTR. 2010. pp 12-31. [online]. Available online at http://my.safaribooksonline.com/9781584507024. [Accessed 18/10/10]
Friday, 15 October 2010
Worksheet 2 - Redone
As I stated in my previous post, I have decided to change my research question as my initial one was too wide. My topic is still within the realm of shadows and lighting but is far more specific now.
(I'm very insecure so I did have some worries that I'd gone from too wide to too narrow but I've been assured that ambient occlusion has enough scope and complexity.)
I would also like to look at how the methods could be expanded so as to better emulate global illumination and indirect lighting.
From there I would progress to looking at the available methods for dynamic ambient occlusion - looking at how they solve the problems presented by static methods, how cost effective they are and what graphical glitches they may present. I've already done a bit of preliminary research and there's a number of different methods/ variations of methods. Of course, no method is perfect so I will also look into ways that they could possibly be improved.
As background reading, I also think it would be interesting to look into methods that produce ambient occlusion automatically such as ray tracing and photon mapping, and other global illumination methods.
c.What experimental work do you need to perform?
I will need to develop a framework and application within which the various methods will be implemented. The demo will display a real-time 3d scene with moving and static objects, a player controlled camera and simple lighting and shadows (shadow mapping). The various AO methods will then be implemented within this app, and the user will be able to switch between methods and also turn lighting on and off. Performance can be measured both with and without ambient occlusion, quite easily by logging the framerates. Graphical quality will have to be measured with the naked eye.
(I'm very insecure so I did have some worries that I'd gone from too wide to too narrow but I've been assured that ambient occlusion has enough scope and complexity.)
- Formulate a research question for your project.
What are the solutions to rendering dynamic ambient occlusion in realtime 3D applications (i.e. games) and how can they be improved upon*?
*(in terms of quality, cost effectiveness and better approximating global illumination/indirect lighting)
*(in terms of quality, cost effectiveness and better approximating global illumination/indirect lighting)
- Try and answer the following questions in trying to decide the RQ.
a. What is the focus of your project?
The focus will be mainly on the cost effectiveness of the different methods investigated - particularly when used in a scene with lighting, shadows, moving objects and player intereaction - as ambient occlusion can hit the frame rate hard. Of course, graphical quality is also an issue and the realism of the proximity shadows, i.e. softness, lack of artifacts etc, will be the secondary focus.I would also like to look at how the methods could be expanded so as to better emulate global illumination and indirect lighting.
b. What info do you need to find out about?
I will need to first look into static ambient occlusion - the theory behind it, its application and why the implementations for static AO are not viable for dynamic AO.From there I would progress to looking at the available methods for dynamic ambient occlusion - looking at how they solve the problems presented by static methods, how cost effective they are and what graphical glitches they may present. I've already done a bit of preliminary research and there's a number of different methods/ variations of methods. Of course, no method is perfect so I will also look into ways that they could possibly be improved.
As background reading, I also think it would be interesting to look into methods that produce ambient occlusion automatically such as ray tracing and photon mapping, and other global illumination methods.
I will need to develop a framework and application within which the various methods will be implemented. The demo will display a real-time 3d scene with moving and static objects, a player controlled camera and simple lighting and shadows (shadow mapping). The various AO methods will then be implemented within this app, and the user will be able to switch between methods and also turn lighting on and off. Performance can be measured both with and without ambient occlusion, quite easily by logging the framerates. Graphical quality will have to be measured with the naked eye.
Wednesday, 13 October 2010
Change of Research Question
Today I met with Matt Bett to talk about my research question - specifically the scope - and he confirmed what I had already suspected. My research question is too broad. Matt highighted some more specific areas that I might like to focus on, such as soft shadowing and ambient occlusion. I was especially interested in the topic of ambient occlusion in real time.
In short, ambient occlusion is used to generate the soft shadows that appear in creases or corners where light cannot reach so easily. It is seperate from the shadows actually cast by light sources, so the type and position of any light sources in the scene are not needed in the calculations. Adding ambient occlusion to a scene gives objects a more realistic, 3 dimensional appearance than just cast shadows and lighting on their own would.
An example of dynamic ambient occlusion -> http://www.youtube.com/watch?v=eefsv8tQmAg
Matt told me that this was a pretty current topic in graphics rendering right now, which makes me think that it would be a good topic for my project. There's also a good amount of research material available from what I can see.
I plan to redo Worksheet #2 before the weekend and formulate a new research question based around dynamic ambient occlusion for real time applications.
In short, ambient occlusion is used to generate the soft shadows that appear in creases or corners where light cannot reach so easily. It is seperate from the shadows actually cast by light sources, so the type and position of any light sources in the scene are not needed in the calculations. Adding ambient occlusion to a scene gives objects a more realistic, 3 dimensional appearance than just cast shadows and lighting on their own would.
An example of dynamic ambient occlusion -> http://www.youtube.com/watch?v=eefsv8tQmAg
Matt told me that this was a pretty current topic in graphics rendering right now, which makes me think that it would be a good topic for my project. There's also a good amount of research material available from what I can see.
I plan to redo Worksheet #2 before the weekend and formulate a new research question based around dynamic ambient occlusion for real time applications.
Friday, 8 October 2010
Worksheet 2 - Research Question
Worksheet #2 - Formulating the research question
- Formulate a research question for your project. Details on the research question can be found in presentation 1 in the module folder.
- When developing a research question you must produce a question that can be answered by performing literature research, practical experimentation and critical analysis. The question should also focus the activities of your project.
- Try and answer the following questions in trying decide on the RQ
- What is the focus of your project?
- What information do you need to find out about?
- What Experimental work do you need to perform?
- Can your Research Question be refined in the light of answers to 2 and 3
- How will the information that you obtain in 2 allow you to answer the research question?
- Formulate a research question for your project.
Investigate the various methods for calculating and rendering shadows in a real-time 3D scene in order to determine the best balance of realism and performance that can be achieved.
- Try and answer the following questions in trying to decide the RQ.
a. What is the focus of your project?
The focus will be on both the realism* of the shadows and the performance/frame rate of the application and finding a good balance between the two. The project will look at the different methods and combinations of methods needed to achieve this.
*by realism I mean good quality, accurate looking shadows, without pixilation or artefacts.
b. What info do you need to find out about?
There are a number of methods that need to be investigated:
Shadow Mapping – A popular technique for shadow rendering, shadow mapping involves rendering the scene from the light's point of view and extracting the depth buffor information which is then stored as a 2D texture (the shadow map). The scene is then rendered a second time, from the camera's viewpoint. As each object in the scene is rendered, it's position is compared to the the shadow map. If a pixel is further away from the the light source than the value in the shadow map, then that pixel is shadowed. This method can create very nice, soft shadows and is considered to be an efficient real time algorithm.
(I've looked at/implemented shadow mapping before, during the 3rd year group project so I think I have quite a good grasp of how it works.)
Shadow Volumes – The other popular technique for shadows, this method creates sharp, per pixel accurate shadows. The technique involves projecting a line from the light source through each vertex of the shadow casting object to some far point. These lines will form a 3D volume that will encapsulate all the shadows cast by the object. The shadow volume is then rendered to the stencil buffer only. For each front facing face, the stencil buffer value is increased and vice versa for the back facing faces. Once this has been done for each face, any pixel with a value not equal to 0 is in shadow.
(I'll need to do some really in depth research on shadow volumes, as I've never looked at them before.)
I've been browsing the internet for information about these techniques and I've already found quite a few variations on each method which could merit further investigation.
There are also methods for rendering planar shadows which I may look at for the sake of completeness.
c. What experimental work do you need to perform?
I will need to develop a framework and application within which the various methods will be implemented. The demo will display a real-time 3d scene with moving and static objects which will both cast shadows and be cast upon. Of course there are variations of each method to be looked at and some experimenting as to how they could be combined. The application will measure the frame rate of the scene for each method – this will measure performance, but the realism will have to be measured with the naked eye.
Wednesday, 6 October 2010
Platform Choice
I've given some thought this week to what platform I'm going to utilise for my project's application and I've decided to go with DirectX rather than XNA or OpenGL. To help me decide, I made a small note of the pros and cons that concerned me for each platform.
OpenGL: I'm familiar with the API, having used it in both second and third year and it's a good platform for graphics applications. However, I intend to use shaders in my application and the shader support in OpenGL is not great. There is no error checking in glsl shaders, it's more a case of going through the shader line by line until you find the line that caused the problem. In general, I am far more comfortable with HLSL than GLSL and I think that using GLSL would only cause more stress.
XNA: XNA has great shader support and error checking, and C# is close enough to C++ to be easily learnt. However, I'm not too comfortable with all aspects of the API, mainly because my previous experience with it was as part of a group, so most of the framework I were using was constructed by other people - (my main focus there was the shaders).
DirectX: Good shader support (not as good as XNA when it comes to error checking but not bad) and I'm quite familar with the API. I will be able to reference some aspects of the framework from my third year directx coursework. I think that really, DirectX is the middle ground, between OpenGL and XNA.
(Hopefully I won't change my mind about this.)
OpenGL: I'm familiar with the API, having used it in both second and third year and it's a good platform for graphics applications. However, I intend to use shaders in my application and the shader support in OpenGL is not great. There is no error checking in glsl shaders, it's more a case of going through the shader line by line until you find the line that caused the problem. In general, I am far more comfortable with HLSL than GLSL and I think that using GLSL would only cause more stress.
XNA: XNA has great shader support and error checking, and C# is close enough to C++ to be easily learnt. However, I'm not too comfortable with all aspects of the API, mainly because my previous experience with it was as part of a group, so most of the framework I were using was constructed by other people - (my main focus there was the shaders).
DirectX: Good shader support (not as good as XNA when it comes to error checking but not bad) and I'm quite familar with the API. I will be able to reference some aspects of the framework from my third year directx coursework. I think that really, DirectX is the middle ground, between OpenGL and XNA.
(Hopefully I won't change my mind about this.)
Tuesday, 28 September 2010
Honours Project Topic Choice
When it came to thinking about what I was going to focus on for my Honours Project, my mind instantly gravitated to graphics - lighting and shadows in particular. This is probably because during third year most of my coursework projects were focused on lighting, shaders and shadows, so I feel that I have more experience in that area than any other. It may also be because I like making things look pretty. Who knows. Either way, I've developed a strange fascination with shadows. Every time I play a game now I look at the shadows and I think 'ooooh nice, I wonder how they did that.' (Except in the case of my crappy old desktop - playing games on that made me think 'oohhh, I wish I could put the graphics high enough for shadows D: '
Anywho, onto business!
1. State the topic of interest that you may wish to take forward into a project.
Like I said, graphics. I'm interested in lighting, shaders, shadows. Especially shadows. I'd like to look at shadow rendering in realtime 3D applications.
2. Indicate the issues surrounding this topic that you may wish to investigate.
I think that the two main issues when it comes to shadow rendering are performance and quality. The calculations required to create soft, real looking shadows often require a lot of processing and cause the application to slow down. But at the same time, realistic looking shadows can add a lot to a 3D scene so we don't want to sacrifice that graphical quality altogether. The question is, I think, is how to find an acceptable balance between the two.
There are a number of methods available for rendering shadows, i.e. shadow mapping, shadow volumes, z buffer shadows (though these are very basic) etc, each with their own pros and cons. Some of these algorithms could even be combined. (I believe there is also a ray tracing technique for shadows but it would not be suitable for real time calculations)
3. Outline your initial ideas about how you would carry out the practical aspects of the project. i.e. What do you envisage yourself doing for the project.
Anywho, onto business!
1. State the topic of interest that you may wish to take forward into a project.
Like I said, graphics. I'm interested in lighting, shaders, shadows. Especially shadows. I'd like to look at shadow rendering in realtime 3D applications.
2. Indicate the issues surrounding this topic that you may wish to investigate.
I think that the two main issues when it comes to shadow rendering are performance and quality. The calculations required to create soft, real looking shadows often require a lot of processing and cause the application to slow down. But at the same time, realistic looking shadows can add a lot to a 3D scene so we don't want to sacrifice that graphical quality altogether. The question is, I think, is how to find an acceptable balance between the two.
There are a number of methods available for rendering shadows, i.e. shadow mapping, shadow volumes, z buffer shadows (though these are very basic) etc, each with their own pros and cons. Some of these algorithms could even be combined. (I believe there is also a ray tracing technique for shadows but it would not be suitable for real time calculations)
3. Outline your initial ideas about how you would carry out the practical aspects of the project. i.e. What do you envisage yourself doing for the project.
- First off, I would obviously need to decide on the platform - probably out of DirectX, OpenGL or XNA. (I'm leaning away from OpenGL already though, mainly because I dislike GLSL.)
- Build a framework in which to run the application - it will have to display a 3D scene with static and moving objects, with support for (possibly)multiple shaders.
- Research and implement the different shadow calculating/rendering methods within this framework and be able to switch between them in order to compare both framerate and realism.
***************************
And there you have it. My initial ideas on the honours project. I'm very unsure about it to be honest, I can't decide whether it's too general or too narrow, too simple or too complicated. But I do know that I definitely want to do graphics...that's probably the only thing I'm positive about.
Anywho, thankies for reading!
Subscribe to:
Comments (Atom)