void PointLightPositionRenderer::InitializeUniforms(Shader & shader) { const char * uniformNames[__uniforms_count__] = { "u_InnerTessLevel", "u_OuterTessLevel", "u_LightDescSampler", "u_LightDataSampler", "u_LightOffset", }; shader.Use(); shader.AddUniforms(uniformNames, __uniforms_count__); glUniform1i(shader.GetUniform(u_LightDescSampler), 0); glUniform1i(shader.GetUniform(u_LightDataSampler), 1); glUniform1f(shader.GetUniform(u_InnerTessLevel), 1.f); glUniform1f(shader.GetUniform(u_OuterTessLevel), 1.f); shader.SetupFrameDataBlockBinding(); shader.UnUse(); GL_CHECK_ERRORS; }
void SpotLightPositionRenderer::InternalRender(Shader & shader, GLsizei instanceCount, GLint lightOffset, GLuint lightDescBufferId, GLuint lightDataBufferId) { glDisable(GL_CULL_FACE); shader.Use(); glBindVertexArray(mVaoID); glUniform1i(shader.GetUniform(u_LightOffset), lightOffset); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_BUFFER, lightDescBufferId); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_BUFFER, lightDataBufferId); glDrawArraysInstanced(GL_TRIANGLE_FAN, 0, mIndexCount, instanceCount); glBindVertexArray(0); shader.UnUse(); glEnable(GL_CULL_FACE); }
void PointLightPositionRenderer::InternalRender(Shader & shader, GLsizei instanceCount, GLint lightOffset, GLuint lightDescBufferId, GLuint lightDataBufferId) { glDisable(GL_CULL_FACE); shader.Use(); glBindVertexArray(mVaoID); glUniform1i(shader.GetUniform(u_LightOffset), lightOffset); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_BUFFER, lightDescBufferId); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_BUFFER, lightDataBufferId); glPatchParameteri(GL_PATCH_VERTICES, 3); glDrawElementsInstanced(GL_PATCHES, mIndexCount, GL_UNSIGNED_SHORT, 0, instanceCount); glBindVertexArray(0); shader.UnUse(); glEnable(GL_CULL_FACE); }