Good afternoon! My first post, but I've spent a few weeks on these forums and I want to thank everyone, both for all the information already provided and any assistance I might be able to get regarding my own particular endeavor. Y'all are good peoples, and I want to apologize in advance for the very generalized nature of what I'm asking below.
To provide a little background: I am primarily a composer, sound designer, and rudimentary audio engineer who is being asked to transition into some graphics programming because we simply don't have enough people to provide for a high level of specialization. I have a decent but undeveloped coding background (I only really started a year and a half ago) that includes enough C++ for me not to feel overwhelmed by anything I see. What I lack is a sophisticated understanding of how an engine like OGRE structures itself, how its different parts come together to create what I see on screen, how it references itself and external applications, etc. etc. This will obviously take time, and be a work in progress.
All that being said, I've been assigned a specific project: implement a particular approach to global illumination within OGRE (detailed here: http://http.developer.nvidia.com/GPUGem ... ter38.html, if you're interested.) In moving forward on this, I wanted to ask a question that will, by necessity, be couched in layman's terms. My abstract understanding is this: if I, say, create a scene with a single point light in the middle of an empty room, when rendering said scene OGRE will at some point call an algorithm to figure out how the scene is lit. It will employ some methodology for determining direct and indirect illumination across all potential points impacted by the lighting and render the scene accordingly. My undoubtedly oversimplified question is therefore: where is this happening? What class, method, or structure governs this, and is it possible for me to actually look at the code representing this algorithm in order to modify it for my own ends? Is the entire approach encapsulated somewhere, either procedurally or within an object?
I really appreciate any input on this, guys. I'm well aware of what a noobtastic approach this is, and I'm not asking for any specific code as a response. I guess maybe a simpler way to phrase the question would be: if YOU were asked to apply an alternative lighting method to OGRE, where would you start? How would you approach it from a generalized, abstract perspective?
Thanks a million, everyone.
Implemeting an Alternative Lighting Approach
-
- Gnoblar
- Posts: 2
- Joined: Thu Mar 28, 2013 7:25 pm
-
- Gnoblar
- Posts: 12
- Joined: Sun Jun 10, 2012 7:25 pm
- Location: NYC
Re: Implemeting an Alternative Lighting Approach
I saw this paper here called "Extending OGRE with Light Propogating Volumes" and I think it has something like what you mean
https://gupea.ub.gu.se/handle/2077/30096
https://gupea.ub.gu.se/handle/2077/30096
-
- OGRE Expert User
- Posts: 1067
- Joined: Mon Mar 29, 2004 8:49 pm
- Location: the Netherlands
- x 43
Re: Implemeting an Alternative Lighting Approach
If you don't do anything, Ogre will use the fixed function graphics pipeline. That means the videocard does lighting calculations automatically.
Any kind of proper modern lighting is done in the pixel shader. So writing your own pixel shader for lighting would be the thing to do.
However, doing something as complex as you want will take a lot more than just a pixel shader. But the final step of using your lighting data for rendering an object will be in a pixel shader.
Any kind of proper modern lighting is done in the pixel shader. So writing your own pixel shader for lighting would be the thing to do.
However, doing something as complex as you want will take a lot more than just a pixel shader. But the final step of using your lighting data for rendering an object will be in a pixel shader.
My dev blog
Awesomenauts: platforming MOBA (PC/Mac/Linux/XBox360/X1/PS3/PS4)
Blightbound: coop online dungeon crawler (PC)
Swords & Soldiers: side-scrolling RTS (Switch/PS3/Wii/PC/Mac/Linux/iPhone/iPad/Android)
Proun: abstract racing game (PC)
Cello Fortress: mixing game and live cello performance
The Ageless Gate: cello album
Awesomenauts: platforming MOBA (PC/Mac/Linux/XBox360/X1/PS3/PS4)
Blightbound: coop online dungeon crawler (PC)
Swords & Soldiers: side-scrolling RTS (Switch/PS3/Wii/PC/Mac/Linux/iPhone/iPad/Android)
Proun: abstract racing game (PC)
Cello Fortress: mixing game and live cello performance
The Ageless Gate: cello album
-
- OGRE Expert User
- Posts: 1067
- Joined: Mon Mar 29, 2004 8:49 pm
- Location: the Netherlands
- x 43
Re: Implemeting an Alternative Lighting Approach
Ow, by the way, years ago I wrote a paper that explains the basics of how rendering works. More options have been added since then, but the basics still apply.
http://www.proun-game.com/Oogst3D/ARTIC ... aphics.pdf
http://www.proun-game.com/Oogst3D/ARTIC ... aphics.pdf
My dev blog
Awesomenauts: platforming MOBA (PC/Mac/Linux/XBox360/X1/PS3/PS4)
Blightbound: coop online dungeon crawler (PC)
Swords & Soldiers: side-scrolling RTS (Switch/PS3/Wii/PC/Mac/Linux/iPhone/iPad/Android)
Proun: abstract racing game (PC)
Cello Fortress: mixing game and live cello performance
The Ageless Gate: cello album
Awesomenauts: platforming MOBA (PC/Mac/Linux/XBox360/X1/PS3/PS4)
Blightbound: coop online dungeon crawler (PC)
Swords & Soldiers: side-scrolling RTS (Switch/PS3/Wii/PC/Mac/Linux/iPhone/iPad/Android)
Proun: abstract racing game (PC)
Cello Fortress: mixing game and live cello performance
The Ageless Gate: cello album