Monday, May 27, 2013

Shader Running Really Slowly For Some Reason? - C And C++ ...


Example
#{example}
"); ipb.editor_values.get('templates')['togglesource'] = new Template("
??? Cancel Source Edit
"); ipb.editor_values.get('templates')['toolbar'] = new Template(""); ipb.editor_values.get('templates')['button'] = new Template("
  • Icon
  • "); ipb.editor_values.get('templates')['menu_item'] = new Template("
  • #{title}
  • "); ipb.editor_values.get('templates')['togglesource'] = new Template("
    ??? Cancel Source Edit
    "); ipb.editor_values.get('templates')['emoticons_showall'] = new Template(""); ipb.editor_values.get('templates')['emoticon_wrapper'] = new Template("

    Emoticons

    "); // Add smilies into the mix ipb.editor_values.set( 'show_emoticon_link', false ); ipb.editor_values.set( 'bbcodes', $H({"snapback":{"id":"1","title":"Post Snap Back","desc":"This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.","tag":"snapback","useoption":"0","example":"[snapback]100[/snapback]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"topic":{"id":"5","title":"Topic Link","desc":"This tag provides an easy way to link to a topic","tag":"topic","useoption":"1","example":"[topic=1]Click me![/topic]","switch_option":"0","menu_option_text":"Enter the topic ID","menu_content_text":"Enter the title for this link","single_tag":"0","optional_option":"0","image":""},"post":{"id":"6","title":"Post Link","desc":"This tag provides an easy way to link to a post.","tag":"post","useoption":"1","example":"[post=1]Click me![/post]","switch_option":"0","menu_option_text":"Enter the Post ID","menu_content_text":"Enter the title for this link","single_tag":"0","optional_option":"0","image":""},"spoiler":{"id":"7","title":"Spoiler","desc":"Spoiler tag","tag":"spoiler","useoption":"0","example":"[spoiler]Some hidden text[/spoiler]","switch_option":"0","menu_option_text":"","menu_content_text":"Enter the text to be masked","single_tag":"0","optional_option":"0","image":""},"acronym":{"id":"8","title":"Acronym","desc":"Allows you to make an acronym that will display a description when moused over","tag":"acronym","useoption":"1","example":"[acronym='Laugh Out Loud']lol[/acronym]","switch_option":"0","menu_option_text":"Enter the description for this acronym (EG: Laugh Out Loud)","menu_content_text":"Enter the acronym (EG: lol)","single_tag":"0","optional_option":"0","image":""},"hr":{"id":"12","title":"Horizontal Rule","desc":"Adds a horizontal rule to separate text","tag":"hr","useoption":"0","example":"[hr]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"1","optional_option":"0","image":""},"php":{"id":"14","title":"PHP Code","desc":"Allows you to enter PHP code into a formatted/highlighted syntax box","tag":"php","useoption":"0","example":"[php]$variable = true;\n\nprint_r($variable);[/php]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"html":{"id":"15","title":"HTML Code","desc":"Allows you to enter formatted/syntax-highlighted HTML code","tag":"html","useoption":"0","example":"[html]\n \n[/html]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"sql":{"id":"16","title":"SQL Code","desc":"Allows you to enter formatted/syntax-highlighted SQL code","tag":"sql","useoption":"0","example":"[sql]SELECT p.*, t.* FROM posts p LEFT JOIN topics t ON t.tid=p.topic_id WHERE t.tid=7[/sql]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"xml":{"id":"17","title":"XML Code","desc":"Allows you to enter formatted/syntax-highlighted XML code","tag":"xml","useoption":"0","example":"[xml]\n \n Test\n \n[/xml]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"member":{"id":"31","title":"Member","desc":"Given a member name, a link is automatically generated to the member's profile","tag":"member","useoption":"1","example":"[member=skyhawk133] runs this site.","switch_option":"0","menu_option_text":"Input Username of Member","menu_content_text":"","single_tag":"1","optional_option":"0","image":"memberbbcode.png"},"extract":{"id":"33","title":"Extract Blog Entry","desc":"This will allow users to define an extract for an entry. Only this piece of the entry will be displayed on the main blog page and will show up in the RSS feed.","tag":"extract","useoption":"0","example":"[extract]This is an example![/extract]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"blog":{"id":"34","title":"Blog Link","desc":"This tag provides an easy way to link to a blog.","tag":"blog","useoption":"1","example":"[blog=100]Click me![/blog]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"entry":{"id":"35","title":"Blog Entry Link","desc":"This tag provides an easy way to link to a blog entry.","tag":"entry","useoption":"1","example":"[entry=100]Click me![/entry]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"twitter":{"id":"36","title":"Twitter","desc":"A tag to link to a user's twitter account","tag":"twitter","useoption":"0","example":"[twitter]userName[/twitter]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":"twitter.png"},"inline":{"id":"37","title":"Inline Code","desc":"Formats code inline instead of in a seperate code box. ","tag":"inline","useoption":"0","example":"[inline]style=\"font-size: 12px;\"[/inline]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":""},"il":{"id":"38","title":"Abbreviated Inline (IL)","desc":"Abbreviated version of the [inline] tag. ","tag":"il","useoption":"0","example":"[il]Code Here[/il]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"0","image":"il2.png"},"code":{"id":"41","title":"Code","desc":"Allows you to enter general code","tag":"code","useoption":"1","example":"[code]$text = 'Some long code here';[/code]","switch_option":"0","menu_option_text":"","menu_content_text":"","single_tag":"0","optional_option":"1","image":""}}) ); ipb.vars['emoticon_url'] = "http://cdn.dreamincode.net/forums/public/style_emoticons/default"; //Search Setup ipb.vars['search_type'] = 'forum'; ipb.vars['search_type_id'] = 15; ipb.vars['search_type_2'] = 'topic'; ipb.vars['search_type_id_2'] = 321873; //]]>

    3 Replies - 0 Views - Last Post: 4 minutes ago Rate Topic: -----

    #1 zehawk ?Icon User is online

    Reputation: 3

    • Posts: 212
    • Joined: 23-February 12

    Posted Today, 07:03 PM

    Ok, I know how much people hate these questions, the whole "Shader runs slow" or "Code runs slow.." But I seriously do not know what to say about this. I'm making point lighting with, well, multiple lights that will blend. I have no trouble uploading the data, and it draws, at about 70 fps. Here's the code that runs, but if you follow the logic, you will see that only the last light is drawn whereas the other lights are drawn over. I know why, it makes sense, but anything i try to include the other lights causes the fps to go below 20 fps. Keep in mind, this is for a game. Here it is:

    Vertex Shader:

    
 void main() {     gl_TexCoord[0] = gl_MultiTexCoord0;      gl_FrontColor = gl_Color;     // Set the position of the current vertex     gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; } 

    Fragment Shader where only one light is drawn:

    
 void light(const float loc, const float redDiff, const float greenDiff, const float blueDiff,         const float redDist, const float greenDist, const float blueDist) {     //the size of the light     const float lightSize = loc;      //the color of the fragment      lowp vec4 value = {0.0, 0.0, 0.0, 1.0};      float locX;     float locY;      //this is actually the distance x and y components     locX = loc - gl_FragCoord.x;     locY = loc - gl_FragCoord.y;      //the value of a^2 + b^2.     value.r = (locX * locX) + (locY * locY);      //the hypotenuse of the triangle     value.r = sqrt(value.r);     float distance = value.r;      //then the light value, depending on how big the distance away from the light it is     float lightRed = (lightSize - abs(distance * redDist)) / lightSize;     float lightGreen = (lightSize - abs(distance * greenDist)) / lightSize;     float lightBlue = (lightSize - abs(distance * blueDist)) / lightSize;      red = ((lightRed) * redDiff);     green = ((lightGreen) * greenDiff);     blue = (lightBlue) * blueDiff; } void main() { //how many lights there are, currently 64.  i can change that, but this isn't where the problem lies     for(int i = 0; i < 64; i++)     {         light(i * 16, 1, 0.5, 0.0, 1, 1.125, 0.0);     }     gl_FragColor = vec4(red, green, blue, 1) * texture2D(color_texture, gl_TexCoord[0].st); } 

    The above code runs at about 70 fps, which is fine. But only one light is drawn.
    Now, any attempts at adding more lights drops the fps badly, to about 20. The lights all blend well, but 20 fps is bad. A few things i tried was if gates, to see if the new light is brighter than the old value, and if so, the color changes to the new light value. I also tried to find the difference between the new and old, and add it if its positive, but so far that hasn't worked either. So, if anyone could point in the right direction how i can allow blending while keeping 70 fps, that would be appreciated.

    Also, something weird is, take:

    
 red = ((lightRed) * redDiff); green = ((lightGreen) * greenDiff); blue = (lightBlue) * blueDiff; 

    And make it this:

    
 red += ((lightRed) * redDiff); green += ((lightGreen) * greenDiff); blue += (lightBlue) * blueDiff; 

    and frameRate drops considerably. That makes no sense why it does that, and it doesn't draw the lights either.
    However, if only the blue is changed from = to +=, then no frame drop occurs. What could be going on? Anyone know?

    Is This A Good Question/Topic? 0

    Replies To: Shader Running really slowly for some reason?

    #2 ButchDean ?Icon User is online

    Reputation: 879

    • Posts: 3,355
    • Joined: 26-November 10

    Re: Shader Running really slowly for some reason?

    Posted Today, 07:29 PM

    Before I put any thought into this are you running the shader routines in debug or release mode?


    #3 zehawk ?Icon User is online

    Reputation: 3

    • Posts: 212
    • Joined: 23-February 12

    Re: Shader Running really slowly for some reason?

    Posted Today, 07:47 PM

    I'm just loading the shaders into the program normally, not using a debugger. How would i know the difference? I'm new to glsl, sorry...


    #4 ButchDean ?Icon User is online

    Reputation: 879

    • Posts: 3,355
    • Joined: 26-November 10

    Re: Shader Running really slowly for some reason?

    Posted 4 minutes ago

    It would depend on what you are debugging. It's a very long story.

    If you knew how to used the tools of your chosen IDE and a shader debugging tool you would most likely nail the bottleneck.


    Page 1 of 1


    Source: http://www.dreamincode.net/forums/topic/321873-shader-running-really-slowly-for-some-reason/

    patrice oneal shamrock

    No comments:

    Post a Comment

    Note: Only a member of this blog may post a comment.