On Fri, Nov 1, 2013 at 7:46 PM, Nitneroc <[email protected]> wrote:

> Hi everyone,
>
> I'm a total newbie with pyglet and openGL, but I'd like to know if it's
> possible to add an effect (shader, opacity, or anything) to a whole batch.
> Could it be something as easy as modifying a bit the batch visit function ?
>
> What I'd love would be to make a fog, that would darken the lowest batches
> but leave the top batch unchanged. I could change the color attribute of
> every sprite in the batch, but that seems tedious and shaders would be much
> funnier...
>


Maybe

- You must define a group for each batch,
        - the group' s set_state should bind the shader program and send
the uniforms required by the shader (probably an opacity or blackness value)
        - the group' s unset_state should unbind your program
        - if needed, bind and unbind of textures, set and unset blend mode

- you must write the shader(s) code

The core of this feature is knowledge about openGL shaders: If you have
that, the thing is easy, if not you are headed to invest a considerable
amount of time learning shaders.

You could explore alternative ways to darken lower batches; methods would
depend on exactly what you need to draw.

By example, if the batches draws the k most far layers of terrain, meaning
something like

scene
   actors
   terrain_batches

you can do

scene
   actors
   batch1
   ColorLayer(0, 0, 0, 20)
   batch2
   ColorLayer(0, 0, 0, 20)
   batch3

Here you will be painting a bit of transparent black over each batch.
Deeper layers will be more darkened.

-- 
You received this message because you are subscribed to the Google Groups 
"cocos2d discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cocos-discuss.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to