<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Using Uniform Blocks for Materials ... in Graphics</title>
    <link>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536325#M58492</link>
    <description>&lt;P&gt;Any ideas about this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are a lot of Intel boards out there that I would like to have my project work for.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
    <pubDate>Sun, 19 Oct 2014 12:35:06 GMT</pubDate>
    <dc:creator>TMaso1</dc:creator>
    <dc:date>2014-10-19T12:35:06Z</dc:date>
    <item>
      <title>Using Uniform Blocks for Materials ...</title>
      <link>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536322#M58489</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am attemtping to use uniform blocks for materials and for some reason with my current implementation the uniform for one material ends up "overriding" the previous drawn information for previous draw calls, which ends up with a lot of flashing on screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The animated gif below does a better job of explaining what happens:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Any ideas? Thank you!&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here are my draw calls and how I send data to the uniform buffer:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;MVPMatrix = (*ProjectionMatrix) * (*ViewMatrix) * ModelMatrix;&lt;/P&gt;
&lt;P&gt;NormalMatrix = glm::transpose(glm::inverse(glm::mat3(MVPMatrix)));&lt;/P&gt;
&lt;P&gt;InverseViewMatrix = glm::inverse((*ViewMatrix));&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;glBindVertexArray(VertextArrayObjectID);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;glUniformMatrix4fv((*AssociatedOpenGLProgram-&amp;gt;GetModelMatrixID()), 1, GL_FALSE, glm::value_ptr(ModelMatrix));&lt;/P&gt;
&lt;P&gt;glUniformMatrix4fv((*AssociatedOpenGLProgram-&amp;gt;GetMVPMatrixID()), 1, GL_FALSE, glm::value_ptr(MVPMatrix));&lt;/P&gt;
&lt;P&gt;glUniformMatrix4fv((*AssociatedOpenGLProgram-&amp;gt;GetViewMatrixID()), 1, GL_FALSE, glm::value_ptr((*ViewMatrix)));&lt;/P&gt;
&lt;P&gt;glUniformMatrix4fv((*AssociatedOpenGLProgram-&amp;gt;GetInverseViewMatrixID()), 1, GL_FALSE, glm::value_ptr(InverseViewMatrix));&lt;/P&gt;
&lt;P&gt;glUniformMatrix3fv((*AssociatedOpenGLProgram-&amp;gt;GetNormalMatrixID()), 1, GL_FALSE, glm::value_ptr(NormalMatrix));&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;glBindBuffer(GL_UNIFORM_BUFFER, (*AssociatedOpenGLProgram-&amp;gt;GetMaterialUniformBufferID()));&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;glBufferData(GL_UNIFORM_BUFFER, sizeof(GLfloat) * 18,&lt;/P&gt;
&lt;P&gt;    AssociatedMaterial-&amp;gt;GetMaterialUniformValues(), GL_DYNAMIC_DRAW);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;glBindBuffer(GL_UNIFORM_BUFFER, NULL);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;if (AssociatedMaterial-&amp;gt;IsWireframeEnabled() != false &amp;amp;&amp;amp; AssociatedOpenGLProgram-&amp;gt;IsWireframeEnabled() == false) {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;    GLfloat EnableWireframe = 1.0f;&lt;/P&gt;
&lt;P&gt;    glUniform1fv((*AssociatedOpenGLProgram-&amp;gt;GetEnableWireframeID()), 1, &amp;amp;EnableWireframe);&lt;/P&gt;
&lt;P&gt;    glDisable(GL_BLEND);&lt;/P&gt;
&lt;P&gt;    glDisable(GL_TEXTURE_2D);&lt;/P&gt;
&lt;P&gt;    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;else {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;    if (AssociatedMaterial-&amp;gt;HasAssociatedTexture()) {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;        GLfloat ObjectHasMaterial = 1.0f;&lt;/P&gt;
&lt;P&gt;        glUniform1fv((*AssociatedOpenGLProgram-&amp;gt;GetObjectHasTextureID()), 1, &amp;amp;ObjectHasMaterial);&lt;/P&gt;
&lt;P&gt;        glUniform1i((*AssociatedOpenGLProgram-&amp;gt;GetTextureSamplerID()), 1);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;        AssociatedMaterial-&amp;gt;BindTexture(1);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;    }&lt;/P&gt;
&lt;P&gt;    else {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;        glBindTexture(GL_TEXTURE_2D, NULL);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;    }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;glDrawElementsInstanced(GL_TRIANGLES, NumOfIndices, GL_UNSIGNED_INT, NULL, 1);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;if (AssociatedMaterial-&amp;gt;IsWireframeEnabled() != false &amp;amp;&amp;amp; AssociatedOpenGLProgram-&amp;gt;IsWireframeEnabled() == false) {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;    GLfloat EnableWireframe = 0.0f;&lt;/P&gt;
&lt;P&gt;    glUniform1fv((*AssociatedOpenGLProgram-&amp;gt;GetEnableWireframeID()), 1, &amp;amp;EnableWireframe);&lt;/P&gt;
&lt;P&gt;    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);&lt;/P&gt;
&lt;P&gt;    glEnable(GL_TEXTURE_2D);&lt;/P&gt;
&lt;P&gt;    glEnable(GL_BLEND);&lt;/P&gt;
&lt;P&gt;    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is how I set up the material uniform in question:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;MaterialUniformBlockID = glGetUniformBlockIndex(programID, "Material");&lt;/P&gt;
&lt;P&gt;glUniformBlockBinding(programID, MaterialUniformBlockID, MaterialUniformBlockBindingPoint);&lt;/P&gt;
&lt;P&gt;glGenBuffers(1, &amp;amp;MaterialUniformBufferID);&lt;/P&gt;
&lt;P&gt;glBindBuffer(GL_UNIFORM_BUFFER, MaterialUniformBufferID);&lt;/P&gt;
&lt;P&gt;glBindBufferBase(GL_UNIFORM_BUFFER, MaterialUniformBlockBindingPoint, MaterialUniformBufferID);&lt;/P&gt;
&lt;P&gt;glBindBuffer(GL_UNIFORM_BUFFER, NULL);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my vertex shader:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# version 330 core&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# extension GL_ARB_explicit_attrib_location : require&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;// Input vertex data, different for all executions of this shader.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;layout(location = 0) in vec3 vPosition;&lt;/P&gt;
&lt;P&gt;layout(location = 1) in vec3 Normals;&lt;/P&gt;
&lt;P&gt;layout(location = 2) in vec2 vUV;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;// Output data ; will be interpolated for each fragment.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;out vec3 SurfaceNormal;&lt;/P&gt;
&lt;P&gt;out vec4 vertexPosition;&lt;/P&gt;
&lt;P&gt;out vec2 TextureCoordinates;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;// Values that stay constant for the whole mesh.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;uniform mat4 MVP;&lt;/P&gt;
&lt;P&gt;uniform mat4 ModelMatrix;&lt;/P&gt;
&lt;P&gt;uniform mat4 ViewMatrix;&lt;/P&gt;
&lt;P&gt;uniform mat3 NormalMatrix;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;void main(){&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;gl_Position = MVP * vec4(vPosition, 1.0);&lt;/P&gt;
&lt;P&gt;vertexPosition = ModelMatrix * vec4(vPosition, 1.0);&lt;/P&gt;
&lt;P&gt;SurfaceNormal = normalize(NormalMatrix * Normals);&lt;/P&gt;
&lt;P&gt;TextureCoordinates = vUV;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;P&gt;And here is my fragment shader:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# version 330&lt;/P&gt;
&lt;P&gt;# extension GL_ARB_explicit_attrib_location : require&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;// These values vary per Mesh&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;layout (std140) uniform Material&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;vec4 AmbientMeshColor;&lt;/P&gt;
&lt;P&gt;vec4 EmissiveMeshColor;&lt;/P&gt;
&lt;P&gt;vec4 DiffuseMeshColor;&lt;/P&gt;
&lt;P&gt;vec4 SpecularMeshColor;&lt;/P&gt;
&lt;P&gt;float MeshShininess;&lt;/P&gt;
&lt;P&gt;float ObjectHasTextureFile;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;};&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;// Sunlight Settings.&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;layout (std140) uniform Sunlight&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;  vec4 SunlightPosition;&lt;/P&gt;
&lt;P&gt;  vec4 SunlightDiffuse;&lt;/P&gt;
&lt;P&gt;  vec4 SunlightSpecular;&lt;/P&gt;
&lt;P&gt;  vec4 SunlightDirection;&lt;/P&gt;
&lt;P&gt;  float constantAttenuation, linearAttenuation, quadraticAttenuation;&lt;/P&gt;
&lt;P&gt;  float spotCutoff, spotExponent;&lt;/P&gt;
&lt;P&gt;  float EnableLighting;&lt;/P&gt;
&lt;P&gt;  float EnableSun;&lt;/P&gt;
&lt;P&gt;  float ExtraValue;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;};&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;uniform vec4 SceneAmbient = vec4(0.2, 0.2, 0.2, 1.0);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;// Whether Materials are enabled at all.&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;uniform float IfEnableTextures;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;// If we are just simply drawing the skybox.&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;uniform float DrawingSkyBox;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;uniform float EnableWirefram...&lt;/P&gt;</description>
      <pubDate>Thu, 16 Oct 2014 20:59:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536322#M58489</guid>
      <dc:creator>TMaso1</dc:creator>
      <dc:date>2014-10-16T20:59:41Z</dc:date>
    </item>
    <item>
      <title>Re: Using Uniform Blocks for Materials ...</title>
      <link>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536323#M58490</link>
      <description>&lt;P&gt;Hi Thomas&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you provide me with a bit of information about your system?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What chipset/CPU&lt;/P&gt;&lt;P&gt;What graphics driver version&lt;/P&gt;&lt;P&gt;What OS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Robert&lt;/P&gt;</description>
      <pubDate>Thu, 16 Oct 2014 21:14:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536323#M58490</guid>
      <dc:creator>ROBERT_U_Intel</dc:creator>
      <dc:date>2014-10-16T21:14:22Z</dc:date>
    </item>
    <item>
      <title>Re: Using Uniform Blocks for Materials ...</title>
      <link>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536324#M58491</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using Windows 8.1 Pro on my laptop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here are my Graphics Card specs as my system reports them:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Vendor: Intel&lt;/P&gt;&lt;P&gt;Renderer: Intel(R) HD Graphics 3000&lt;/P&gt;&lt;P&gt;Version: 3.1.0 - Build 9.17.10.3347&lt;/P&gt;&lt;P&gt;GLSL: 1.40 - Intel Build 9.17.10.3347&lt;/P&gt;</description>
      <pubDate>Thu, 16 Oct 2014 21:59:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536324#M58491</guid>
      <dc:creator>TMaso1</dc:creator>
      <dc:date>2014-10-16T21:59:59Z</dc:date>
    </item>
    <item>
      <title>Re: Using Uniform Blocks for Materials ...</title>
      <link>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536325#M58492</link>
      <description>&lt;P&gt;Any ideas about this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are a lot of Intel boards out there that I would like to have my project work for.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Sun, 19 Oct 2014 12:35:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536325#M58492</guid>
      <dc:creator>TMaso1</dc:creator>
      <dc:date>2014-10-19T12:35:06Z</dc:date>
    </item>
    <item>
      <title>Re: Using Uniform Blocks for Materials ...</title>
      <link>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536326#M58493</link>
      <description>&lt;P&gt;Hi Thomas&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you send a test application to reproduce the issue (executable and/or source code).&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt;If is not possible, a captured stream  with &lt;A href="https://github.com/apitrace/apitrace"&gt;https://github.com/apitrace/apitrace&lt;/A&gt; apitrace will be very helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, do you see the issue with either Nvidia or ATI graphics adapters?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Robert&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;</description>
      <pubDate>Tue, 28 Oct 2014 16:56:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Graphics/Using-Uniform-Blocks-for-Materials/m-p/536326#M58493</guid>
      <dc:creator>ROBERT_U_Intel</dc:creator>
      <dc:date>2014-10-28T16:56:05Z</dc:date>
    </item>
  </channel>
</rss>

