DX9 nodes scope

hi everyone

i am trying to retouch pillow module and to mimic the scope of Pillow.DX9.

i have some questions though:

what is the purpose of Draw Slicewise pin?

what is a the difference between OnShape_UV and FrontProjected_XY mapping?

what is the real purpose of different mapping modes? it seems like vertices are mapped regardless of transformations and Space. what am i missing?

o_0

what is a the difference between OnShape_UV and FrontProjected_XY mapping?

what is the real purpose of different mapping modes? it seems like vertices are mapped regardless of transformations and Space. what am i missing?

many particles are constructed with a u,v-grid in mind. check out the segment and you will see the difference. or the sphere (dx9).

but with some particles some modes are identical. (and others are not really usable). it was just meant to be a base from which texture transforms occur.

the Draw Slicewise Pin.
the directx help for developers says: try to do very few directx-draw-calls. try to draw thousands of triangles with one call. so that’s why normally the whole spread is drawn in one move, if possible. therefore a big vertexbuffer is created with all slices included inside. but sometimes, when you also spread textures or renderstates, it isn’t possible to draw that with one call anymore.

however there is also an upper limit of triangles which can be drawn in one move. i don’t remember exactly, why this isn’t automatized (draw with several draw calls then, to be able to draw bigger spreads…).

The decision to make that behaviour tweakable over the “Draw Slicewise Pin” was based on an uncertainty in which cases, which draw-model is faster:

  • draw everything in one call: transformations and texture-transformations have to be performed on each vertex for each slice in the CPU (Vec*Matrix). the whole vertexbuffer has to be changed in each frame. drawing is faster after that.

  • draw slicewise: (Vec*Matrix) for transformations and texture-transformations can be done within the GPU by setting the corresponding states before each draw call. in most cases (when no arbitrary transform is used, …), the vertexbuffer is created once and then stays untouched for most frames. this is good. however many drawcalls have to be made (for each slice). in most cases vertexbuffer and indexbuffer also can shrink and describe only one slice (because the other slices only differ in transformations…)

grtz, s

roger that. nice and clear.

tnx gregsn