Jump to content

  • Log In with Google      Sign In   
  • Create Account


one variable for an intance


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
6 replies to this topic

#1 lomateron   Members   -  Reputation: 325

Like
0Likes
Like

Posted 18 February 2013 - 07:53 AM

The title is wrong, This is what i relly want, i have this in hlsl code

 

Texture2D Texture;

....

....

 

is there a way to take this Tex2Da.Load( uint3(0,0,0))

and Tex2Da.Load( uint3(1,0,0))

and Tex2Da.Load( uint3(2,0,0))

and transform it into a global effect vector variable so i don't have to Load() them every vertex shader or pixel shader.


Edited by lomateron, 18 February 2013 - 03:16 PM.


Sponsor:

#2 cozzie   Members   -  Reputation: 1579

Like
0Likes
Like

Posted 18 February 2013 - 12:06 PM

Could you set the 3 texels once per frame and using them throughout all processed instanced?
(by setting the effect parameter)

#3 lomateron   Members   -  Reputation: 325

Like
0Likes
Like

Posted 18 February 2013 - 12:46 PM

I improved 1 original post question

How is that, i will like to see an example, code

the three texels are already on a 

 

Texture2D Tex2Da;

 

And I load them in the vertex shader but 64*1000*3 Load()s is too much, i want to know if there is a way to load them just onetime, and pass the 3 values to all the pixel shaders or vertex shaders that will run on all the intances.

If there could be something like that, for a complete drawIntanced()


Edited by lomateron, 18 February 2013 - 03:18 PM.


#4 cozzie   Members   -  Reputation: 1579

Like
0Likes
Like

Posted 18 February 2013 - 02:29 PM

I'm not 100% sure if I understand it correct, but it looks like you're doing it in the technique (function) itself.

Where do you use the l1, l2 and l3 variables in the effect/shader?

 

My 1st thought would be that you use them for each processed vertex or pixel, and that those 3 lines would be in your VS or PS function.



#5 lomateron   Members   -  Reputation: 325

Like
0Likes
Like

Posted 18 February 2013 - 03:05 PM

read first post again

 

yes they are inside the vertex shader and passed to the pixel shader (the code that i showed is incorrect, but i want to know if there is something like that )

 

There are less vertices than pixels so its better to have the load() in the vertex shader and then pass them to the pixel shader


Edited by lomateron, 18 February 2013 - 03:18 PM.


#6 phil_t   Crossbones+   -  Reputation: 3255

Like
0Likes
Like

Posted 18 February 2013 - 04:39 PM

I think what you're asking is:

 

When rendering your frame, you render some data to a texture. Then you want to use this texture data in subsequent runs of a vertex shader (the same three texture samples for all runs of the vertex shader). Normally this would make sense to be a shader constant; but in your case it can't be because the data was generated on the GPU earlier in that frame and is never pulled back to the CPU. So you're basically searching for a way to use this data in your vertex shader, without having every vertex shader run have to take the 3 samples.

 

Is that correct?

 

 

I don't know of a way to do that, but:

1) Could you instead calculate this data on the CPU? Or do the calculations that go into those 3 pixels of interest in your texture come from something that has to be done on the GPU? Or,

2) Could you put up with a delay of a couple of frames, allowing you to pull this data back to the CPU when it's available and then set it as a shader constant?

 

 

Also, is doing the 3 samples in every VS run an actual a performance problem, or an imagined one?



#7 lomateron   Members   -  Reputation: 325

Like
0Likes
Like

Posted 18 February 2013 - 05:27 PM

The 3 texels are inside a texture that indicates the position of spheres, the position changes in complex ways and the change is done inside the GPU.

I take those 3 or more spheres and transform into points of lights. Then when rendering the many spheres I need the 3 or more points of light positions to calculate how the other spheres shine.

The 3 Load() are very costly as the number of spheres increases, 3 Load() for every vertice of the many spheres i render (its better than for every pixel, in average there are more pixels than vertices)


Edited by lomateron, 18 February 2013 - 05:30 PM.





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