Jump to content

  • Log In with Google      Sign In   
  • Create Account


GLSL: What is better? const or inline?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 RPTD   Members   -  Reputation: 316

Like
0Likes
Like

Posted 31 March 2012 - 06:42 PM

I tend to write GLSL code like this:

>>>
const vec2 somethingConstant = vec2( 2.0 );
...
bla = blu * somethingConstant;
<<<

Hence I move constants out to a common place using the const keyword and using them even if they are used only one. Now with ATI and texelFetchOffset I ran into a crash when I used such a const constant as offset. Using it directly it worked without crashing (hence texelFetchOffset( sampler, tc, lod, ivec2(0,1) ) for example). There I had to turn the constant inline to prevent the crash. Hence the above example would look like this in the inline version:

>>>
bla = blu * vec2( 2.0 );
<<<

Which version is better? Is it better to do all "const" or all "inline"? Does one version require more ALU instructions or are they more or less equal? Is one more "resistent" towards broken compilers like in the above mentioned ATI case?
Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine

Sponsor:

#2 V-man   Members   -  Reputation: 805

Like
0Likes
Like

Posted 31 March 2012 - 07:30 PM

That's not called an inline. It is called a immediate value. The compiler may or may not make it as part of the instruction. If it can't, then it would put the value in a register and reference it.

As for the crash, a driver should never crash.
You can post your problem at the OpenGL Driver forum
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=13&page=1
Sig: http://glhlib.sourceforge.net
an open source GLU replacement library. Much more modern than GLU.
float matrix[16], inverse_matrix[16];
glhLoadIdentityf2(matrix);
glhTranslatef2(matrix, 0.0, 0.0, 5.0);
glhRotateAboutXf2(matrix, angleInRadians);
glhScalef2(matrix, 1.0, 1.0, -1.0);
glhQuickInvertMatrixf2(matrix, inverse_matrix);
glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);

#3 RPTD   Members   -  Reputation: 316

Like
0Likes
Like

Posted 01 April 2012 - 04:09 AM

That's not called an inline. It is called a immediate value. The compiler may or may not make it as part of the instruction. If it can't, then it would put the value in a register and reference it.

So both versions should be the same or does one always use a register and the other not?

As for the crash, a driver should never crash.
You can post your problem at the OpenGL Driver forum
http://www.opengl.or...Board=13&page=1

It's a known bug over there but ATI doesn't give a damn about it nor doesn't want to fix it so hack-time it is.
Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine

#4 RPTD   Members   -  Reputation: 316

Like
0Likes
Like

Posted 01 April 2012 - 04:10 AM

(...) it nor doesn't want to fix it (...)

nor does it want to fit it...

why the hell is there no edit button anymore? How I hate "verschlimmbesserungen" U_U
Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine

#5 tanzanite7   Members   -  Reputation: 1222

Like
0Likes
Like

Posted 01 April 2012 - 12:28 PM

why the hell is there no edit button anymore?

Wut?

edit: i do see the edit button :/. Did i miss some funky forum functionality that disables it at some point?

Edited by tanzanite7, 01 April 2012 - 12:29 PM.


#6 Slavik81   Members   -  Reputation: 360

Like
0Likes
Like

Posted 02 April 2012 - 01:27 PM

After posting, the edit button doesn't appear until you refresh the page.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS