I'm used to writing mental ray shaders. Mental ray uses different coordinate spaces for every scene item which means shader code contains many conversion routines to do simple stuff like diffuse shading.
I'm still getting my feet wet with OpenGL shaders using the Phong shader you sent me a while back. As a learning exercise I'm attempting to extend it to support point and spot lights. I initially experienced funky lighting when the point light was inserted into a hierarchy and moved around the scene, but then I caught my mistake and removed the computations that consider light orientation. One sticking point I have right now is how to get the world coordinate of the current shaded pixel. I see it defined in the vertex shader source (GLSL), but how do I read that into the C++ code so I can work with it further? All the calls I see in the C++ code push values from C++ into the vertex/fragment shaders. I need to go the other direction. Thanks, Matt From: [email protected] [mailto:[email protected]] On Behalf Of John Voltaire Tensuan Sent: Wednesday, February 06, 2013 6:46 PM To: [email protected] Subject: RE: SDK: OGLLight Hi Matt, Coordinates returned by OGLLight should all be in global space. Are you seeing any weird behavior with it? Thanks, John From: [email protected]<mailto:[email protected]> [mailto:[email protected]] On Behalf Of Alok Sent: Thursday, February 07, 2013 7:37 AM To: [email protected]<mailto:[email protected]> Subject: Re: SDK: OGLLight Should be global, but again not sure [cid:[email protected]] On 06/02/2013 6:34 PM, Matt Lind wrote: Let me rephrase - what coordinate space is returned: local? Global? Screen? Normal? Camera? Thanks, Matt From: [email protected]<mailto:[email protected]> [mailto:[email protected]] On Behalf Of Alok Sent: Wednesday, February 06, 2013 3:23 PM To: [email protected]<mailto:[email protected]> Subject: Re: SDK: OGLLight Not sure, but as far as I can remember, it uses homogenous coordinates so point (x, y, z) is represented as (xw, yw, zw, w). If you are getting a return of four scalars and want to convert to 3d cartesian , simply divide the first three values by the fourth value. Maybe I am wrong, but not completely. [cid:[email protected]] On 06/02/2013 5:58 PM, Matt Lind wrote: Anybody know what coordinate space is used for the values returned by the OGLLight? (e.g. OGLLight.GetLightPosition(), OGLLight.GetLightDirection(), ...) The documentation doesn't specify. Matt No virus found in this message. Checked by AVG - www.avg.com<http://www.avg.com> Version: 2012.0.2238 / Virus Database: 2639/5585 - Release Date: 02/06/13 No virus found in this message. Checked by AVG - www.avg.com<http://www.avg.com> Version: 2012.0.2238 / Virus Database: 2639/5585 - Release Date: 02/06/13
<<inline: image001.gif>>

