Setting GLSL attribute variables per vertex with jitter

Sep 24, 2007 at 5:05am

Setting GLSL attribute variables per vertex with jitter

Hello

how does one set attribute variables *per vertex* within a shader or
slab vertex program? Ideally I would like to be able to use a
sampler2DRect *within* a vertex program, but I understand that this
is not possible with the current opengl version (is this correct, at
least, I get errors specifying I have 0 vertex texture buffers and am
trying to allocate 1 from the debugger). Besides my ideal case of
using a texture directly, I would like to set the attribute variables
to offset geometry.

Is this easily possible, to use a float 32 texture, use its values as
attribute variables and pass them to a vertex program inbetween
glBegin and glEnd, as per

http://www.lighthouse3d.com/opengl/glsl/index.php?oglattribute

id like not to have to go a readback to a matrix and then jit.spill, –
> back to the gpu as attribute data, or something like that.

is this a time to use GLLua ?

Id love to keep this ‘strictly Jitter native’, sans 3rd party solutions

Wes, Andrew B? Randy J? ! Help, you are my only hope!

:)

v a d e //

http://www.vade.info
abstrakt.vade.info

#33780
Sep 24, 2007 at 5:29am

> Wes, Andrew B? Randy J? ! Help, you are my only hope!
>
> :)

Dear princess vade,
Here you go: http://www.mat.ucsb.edu/~whsmith/Vertex_attr.zip

There are other constans to access the data sent to other mesh inlets
like TANGENT or NORMAL. I believe these are documented in the Jitter
appendix.

wes

#113022
Sep 24, 2007 at 6:18am

ah, thanks! So attribute variables must come from CPU land, and it
seems as though vertex_attr_matrix is only a jit.gl.mesh message?

Is there a way to use texture data as a vertex attribute (besides
readback -> upload to gpu again?)

Think Id look good with those princess Leia hair buns?

:D

Thanks for the quick reply – its all beginning to make sense, ive
already implemented something with vertex attributes and mesh that is
about 4 to 5 times faster than my earlier method. Awesome. I love
finding new functionality in areas I havent explored with Jitter,
this rocks my socks.

On Sep 24, 2007, at 1:29 AM, Wesley Smith wrote:

>> Wes, Andrew B? Randy J? ! Help, you are my only hope!
>>
>> :)
>
> Dear princess vade,
> Here you go: http://www.mat.ucsb.edu/~whsmith/Vertex_attr.zip
>
> There are other constans to access the data sent to other mesh inlets
> like TANGENT or NORMAL. I believe these are documented in the Jitter
> appendix.
>
> wes

v a d e //

http://www.vade.info
abstrakt.vade.info

#113023
Sep 24, 2007 at 6:32am

Technically it is possible to “render to vertex buffer object” but
this hasn’t been exposed in Jitter or actually in jit.gl.lua either.

wes

#113024
Sep 24, 2007 at 6:44am

No worries. This is already so vastly superior to my previous method,
its ok for now.

Thanks a lot!

On Sep 24, 2007, at 2:32 AM, Wesley Smith wrote:

> Technically it is possible to “render to vertex buffer object” but
> this hasn’t been exposed in Jitter or actually in jit.gl.lua either.
>
> wes

v a d e //

http://www.vade.info
abstrakt.vade.info

#113025
Sep 24, 2007 at 5:08pm

On Sep 23, 2007, at 11:18 PM, vade wrote:

> ah, thanks! So attribute variables must come from CPU land, and it
> seems as though vertex_attr_matrix is only a jit.gl.mesh message?

FWIW, if you want to set other varying attributes from your vertex
shader (i.e. procedural information on a per vertex basis, rather
than sending from the CPU), simply use the “varying” instead of
“uniform” keyword for the variable in question. More info on this in
the Orange Book, GLSL Spec, and online tutorials.

-Joshua

#113026
Sep 24, 2007 at 5:21pm

> FWIW, if you want to set other varying attributes from your vertex
> shader (i.e. procedural information on a per vertex basis, rather
> than sending from the CPU), simply use the “varying” instead of
> “uniform” keyword for the variable in question. More info on this in
> the Orange Book, GLSL Spec, and online tutorials.

This is true for sending data between the vertex and fragment shader,
but I think vade was asking more about sending per-vertex information
into the vertex shader. The only way to do this in OpenGL is to use
vertex buffers (which jit.gl.mesh uses internally) or to use
old-school type function calls like glVertexAttr (or something like
that) on a per-vertex basis

i.e:

glBegin()

glNormal()
glTexCoord()
glVetexAttr()
glVertex()

glEnd()

wes

#113027
Sep 24, 2007 at 11:21pm

Yeah, exactly. What Wes said :)

On Sep 24, 2007, at 1:21 PM, Wesley Smith wrote:

>> FWIW, if you want to set other varying attributes from your vertex
>> shader (i.e. procedural information on a per vertex basis, rather
>> than sending from the CPU), simply use the “varying” instead of
>> “uniform” keyword for the variable in question. More info on this in
>> the Orange Book, GLSL Spec, and online tutorials.
>
> This is true for sending data between the vertex and fragment shader,
> but I think vade was asking more about sending per-vertex information
> into the vertex shader. The only way to do this in OpenGL is to use
> vertex buffers (which jit.gl.mesh uses internally) or to use
> old-school type function calls like glVertexAttr (or something like
> that) on a per-vertex basis
>
> i.e:
>
> glBegin()
>
> glNormal()
> glTexCoord()
> glVetexAttr()
> glVertex()
>
> …
>
> glEnd()
>
> wes

v a d e //

http://www.vade.info
abstrakt.vade.info

#113028
Oct 21, 2009 at 11:05pm

Wes, can you upload the file again?
http://www.mat.ucsb.edu/~whsmith/vertex_attr.zip
This link is not working.

I’m reading orange book and stuck in ‘attribute variables’
Can’t understand fully…

Thank you
Jin

#113029

You must be logged in to reply to this topic.