[Bf-committers] Shadow buf question
Ton Roosendaal
ton at blender.org
Sun Nov 11 15:25:12 CET 2007
Hi,
Blender's renderer uses camera-space coordinates (looking into -Z
axis). For (ancient) optimizating reasons all geometry is transformed
into this space.
To make the lamp buffers work, it requres a transform from camera space
into lamp. That's why!
-Ton-
On 11 Nov, 2007, at 4:35, Jonathan Merritt wrote:
> Hi Joe,
>
> I may be wrong, but I think this is because the coordinates used in
> the rendering pipeline have already been multiplied by re->viewmat for
> the camera.
>
> Some abbreviations:
> C = re->viewmat for render camera (not the light source)
> O = ob->obmat for the object being rendered (object->world)
> L = ob->obmat for the light (light->world)
> x_w = world coordinates of object
> x_c = coordinates of object during rendering (in render camera
> coordinates)
> x_l = coordinates of object in shadow buffer render
> x_o = original object coordinates
>
> Now, initially, when objects are prepared for rendering, their
> coordinates are transformed as follows:
> x_c = x_o * O * C
> (see, for example, line 1883 of convertblender.c where mesh
> vertices are transformed)
> Since x_w = x_o * O, this is equivalent to:
> x_c = x_w * C
>
> When the shadow buffer is set up, its matrix is:
> C^{-1} * L^{-1}
> Hence, shadow buffer coordinates of the object are given by:
> x_l = x_c * C^{-1} * L^{-1}
> = (x_o * O * C) * C^{-1} * L^{-1}
> = x_o * O * L^{-1}
> But, x_o * O are just the world coordinates of the object:
> x_l = x_w * L{-1}
> This last line is what you expect.
>
> Uh-oh spaghetti-code... :-/
>
> Jonathan Merritt.
>
> On 11/11/2007, at 1:02 PM, Joe Eagar wrote:
>
>> Hi. The shadow buffer view matrix is initialized in
>> source/blender/render/intern/source/convertblender.c in initshadowbuf.
>> This matrix is used by all the shadow buffer code, including DSM.
>>
>> The matrix is initilized by multiplying the inverted camera matrix
>> with
>> the inverted lamp orientation matrix. Anyone know
>> why this is? I think if I knew the answer to this question, I might be
>> able to track down why I keep getting crazy zbuffer
>> behaviour among other things.
>>
>> Joe
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>
>
------------------------------------------------------------------------
--
Ton Roosendaal Blender Foundation ton at blender.org
http://www.blender.org
More information about the Bf-committers
mailing list