Example #1
0
void PrimitiveShader_PC::init()
{
    model_xy_ = getAttribLocation("i2d_Vertex");
    color_  = getAttribLocation("i2d_Color");
    pv_ = getUniformLocation("i2d_PV");
    glGenBuffers(1, &vbo_);
}
Example #2
0
    SceneColorShader(void) :
        BaseProjNormalShader("shaders/scenecolor.vert",
                             "shaders/scenecolor.frag"),
        texcoordAHandle(-1),
        modelViewMatUHandle(-1),
        lightPositionUHandle(-1),
        lightAmbientUHandle(-1),
        lightDiffuseUHandle(-1),
        lightSpecularUHandle(-1),
        lightShininessUHandle(-1),
        diffuseTexUHandle(-1)
    {
        // vertex attributes
        texcoordAHandle       = getAttribLocation("a_vTexCoord");

        // uniforms
        modelViewMatUHandle   = getUniformLocation("u_mModelViewMat");
        lightPositionUHandle  = getUniformLocation("u_vLightPosition");
        lightAmbientUHandle   = getUniformLocation("u_fLightAmbient");
        lightDiffuseUHandle   = getUniformLocation("u_fLightDiffuse");
        lightSpecularUHandle  = getUniformLocation("u_fLightSpecular");
        lightShininessUHandle = getUniformLocation("u_fLightShininess");
        diffuseTexUHandle     = getUniformLocation("u_tDiffuseTex");

        CHECK_GL_ERROR();
    }
        BaseShader( const char *vertexProgramPath, 
                    const char *fragmentProgramPath) : m_PositionAHandle(-1)
        {
            setSourceFromFiles(vertexProgramPath, fragmentProgramPath);

            m_PositionAHandle = getAttribLocation("a_vPosition");
        }
Example #4
0
std::shared_ptr<VertexBufferObject> ShaderProgram::getAttribute(const char * name)
{
    GLint attributeId = getAttribLocation(name);
    //return attributes[attributeId].lock();
    return attributes[attributeId];

}
Example #5
0
int texture2d5InitGl()
{
	// http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_06

	/* init_resources */


	const GLchar* vertexShaderSource[] = { "#version 100\n attribute vec3 vertexPosition_modelspace; attribute vec2 texcoord; varying vec2 f_texcoord; uniform mat4 MVP; void main(){ gl_Position =  (MVP * vec4(0,0,0,1))+vec4(vertexPosition_modelspace.y, vertexPosition_modelspace.z, 0, 0); f_texcoord = texcoord;}" };
	//const GLchar* vertexShaderSource[] = { "#version 100\n attribute vec3 vertexPosition_modelspace; attribute vec2 texcoord; varying vec2 f_texcoord; uniform mat4 MVP; void main(){ gl_Position =  (MVP * vec4(vertexPosition_modelspace,1))+vec4(vertexPosition_modelspace.y, vertexPosition_modelspace.z, 0, 0); f_texcoord = texcoord;}" };
	//const GLchar* vertexShaderSource[] = { "#version 100\n attribute vec3 vertexPosition_modelspace; attribute vec2 texcoord; varying vec2 f_texcoord; uniform mat4 MVP; void main(){ gl_Position =  MVP * vec4(vertexPosition_modelspace,1); f_texcoord = texcoord;}" };
	const GLchar* fragmentShaderSource[] = { "#version 100\n precision mediump float; varying vec2 f_texcoord; uniform sampler2D mytexture; void main(void) { gl_FragColor = texture2D(mytexture, f_texcoord); }" };




	texture2d5ProgramId = createProgram(vertexShaderSource, fragmentShaderSource);





	texture2d5Coord3dAttribute = getAttribLocation(texture2d5ProgramId, "vertexPosition_modelspace");
	if (texture2d5Coord3dAttribute<0)
	{
		return -1;
	}


	texture2d5Texcoord_attribute = getAttribLocation(texture2d5ProgramId, "texcoord");
	if (texture2d5Texcoord_attribute<0)
	{
		return -1;
	}

	// Get a handle for our "MVP" uniform
	texture2d5MatrixID = getUniformLocation(texture2d5ProgramId, "MVP");

	texture2d5UniformMytexture = getUniformLocation(texture2d5ProgramId, "mytexture");
	if (texture2d5UniformMytexture<0)
	{
		return -1;
	}


	return 0;
}
        BaseProjNormalShader(const char *vertexProgramPath,
                             const char *fragmentProgramPath) : BaseProjectionShader(vertexProgramPath, fragmentProgramPath),
                                                                m_NormalAHandle(-1),
                                                                m_NormalMatUHandle(-1)
        {
            m_NormalAHandle    = getAttribLocation("a_vNormal");

            m_NormalMatUHandle = getUniformLocation("u_mNormalMat");
        }
Example #7
0
Color3DShader::Color3DShader() {
/*}

void SpriteShader::loadFromFiles(const char* vertexShader, const char* fragmentShader) {*/
	GLuint vertexShaderId = loadShader("Calamity/Shader/color3D.vert", GL_VERTEX_SHADER);
	GLuint fragmentShaderId = loadShader("Calamity/Shader/color3D.frag", GL_FRAGMENT_SHADER);
	/*GLuint vertexShaderId = loadShader(vertexShader, GL_VERTEX_SHADER);
	GLuint fragmentShaderId = loadShader(fragmentShader, GL_FRAGMENT_SHADER);*/

	programId = glCreateProgram();
	glAttachShader(programId, vertexShaderId);
	glAttachShader(programId, fragmentShaderId);
	glLinkProgram(programId);

	// Check for errors
	GLint programSuccess = GL_TRUE;
	glGetProgramiv(programId, GL_LINK_STATUS, &programSuccess);
	if (programSuccess != GL_TRUE) {
		printf("Error linking program %d!\n", programId);
		printProgramLog(programId);
		glDeleteProgram(programId);
		programId = 0;

		glDetachShader(programId, vertexShaderId);
		glDetachShader(programId, fragmentShaderId);

		glDeleteShader(vertexShaderId);
		glDeleteShader(fragmentShaderId);

		return;
	}

	glDetachShader(programId, vertexShaderId);
	glDetachShader(programId, fragmentShaderId);

	glDeleteShader(vertexShaderId);
	glDeleteShader(fragmentShaderId);

	positionLocation = getAttribLocation("in_Position");
	colorLocation = getAttribLocation("in_Color");

	projectionMatrixLocation = getUniformLocation("projectionMatrix");
	modelViewMatrixLocation = getUniformLocation("modelViewMatrix");
}
Example #8
0
    BaseShader(const char *vertexProgramPath, 
               const char *fragmentProgramPath) :
        positionAHandle(-1)
    {
        setSourceFromFiles(vertexProgramPath, fragmentProgramPath);

        // vertex attributes
        positionAHandle = getAttribLocation("a_vPosition");

        CHECK_GL_ERROR();
    }
Example #9
0
SimpleShader::SimpleShader() {
	GLuint vertexShaderId = loadShader("Calamity/Shader/simple.vert", GL_VERTEX_SHADER);
	GLuint fragmentShaderId = loadShader("Calamity/Shader/simple.frag", GL_FRAGMENT_SHADER);

	programId = glCreateProgram();
	glAttachShader(programId, vertexShaderId);
	glAttachShader(programId, fragmentShaderId);
	glLinkProgram(programId);

	// Check for errors
	GLint programSuccess = GL_TRUE;
	glGetProgramiv(programId, GL_LINK_STATUS, &programSuccess);
	if (programSuccess != GL_TRUE) {
		printf("Error linking program %d!\n", programId);
		printProgramLog(programId);
		glDeleteProgram(programId);
		programId = 0;
	}

	glDetachShader(programId, vertexShaderId);
	glDetachShader(programId, fragmentShaderId);

	glDeleteShader(vertexShaderId);
	glDeleteShader(fragmentShaderId);

	positionLocation = getAttribLocation("in_Position");

	//texCoordLocation = getAttribLocation("in_TexCoord");

	colorLocation = getAttribLocation("in_Color");

	projectionMatrixLocation = getUniformLocation("projectionMatrix");

	/*modelViewMatrixLocation = getUniformLocation("modelViewMatrix");*/

	/*useTextureLocation = getUniformLocation("useTexture");*/

	/*GLint textureLocation = getUniformLocation("tex");

	glUniform1i(textureLocation, 0);*/
}
Example #10
0
    BaseProjNormalShader(const char *vertexProgramPath,
                         const char *fragmentProgramPath) :
        BaseProjectionShader(vertexProgramPath, fragmentProgramPath),
        normalAHandle(-1),
        normalMatUHandle(-1)
    {
        // vertex attributes
        normalAHandle    = getAttribLocation("a_vNormal");

        // uniforms
        normalMatUHandle = getUniformLocation("u_mNormalMat");

        CHECK_GL_ERROR();
    }
 SceneShader(const char* pVert, const char* pFrag) : BaseProjNormalShader(pVert, pFrag),
                     m_TexcoordAHandle(-1),
                     m_InstanceAHandle(-1),
                     m_ModelViewMatUHandle(-1),
                     m_LightPositionUHandle(-1),
                     m_LightAmbientUHandle(-1),
                     m_LightDiffuseUHandle(-1),
                     m_LightSpecularUHandle(-1),
                     m_LightShininessUHandle(-1),
                     m_DiffuseTexUHandle(-1),
                     m_PositionUHandle(-1)
 {
     m_TexcoordAHandle       = getAttribLocation("a_vTexCoord");
     m_InstanceAHandle       = getAttribLocation("a_vInstance");
     m_ModelViewMatUHandle   = getUniformLocation("u_mModelViewMat");
     m_LightPositionUHandle  = getUniformLocation("u_vLightPosition");
     m_LightAmbientUHandle   = getUniformLocation("u_fLightAmbient");
     m_LightDiffuseUHandle   = getUniformLocation("u_fLightDiffuse");
     m_LightSpecularUHandle  = getUniformLocation("u_fLightSpecular");
     m_LightShininessUHandle = getUniformLocation("u_fLightShininess");
     m_DiffuseTexUHandle     = getUniformLocation("u_tDiffuseTex");
     m_PositionUHandle     = getUniformLocation("u_vPosition");
 }
Example #12
0
   void Program::mapAttributeNamesToIndices(void)
   {
      int total = -1;
      glGetProgramiv(_handle, GL_ACTIVE_ATTRIBUTES, &total);
      for(GLuint i = 0; i < total; ++i)
      {
         int name_len=-1, num=-1;
         GLenum type = GL_ZERO;
         char name[100];
         glGetActiveAttrib(_handle, i, sizeof(name) - 1, &name_len, &num, &type, name);
         name[name_len] = 0;
         _attrib[std::string(name)] = getAttribLocation(name);
      }

#ifdef DEBUG
      std::map<std::string, GLuint>::const_iterator itr;
      for(itr = _attrib.begin(); itr != _attrib.end(); ++itr)
      {
         std::cout << "(name, index): (" << itr->first << "," << itr->second << ")" << std::endl;
      }
#endif
   }
Example #13
0
DeferredShader::DeferredShader() {
/*}

void SpriteShader::loadFromFiles(const char* vertexShader, const char* fragmentShader) {*/
	GLuint vertexShaderId = loadShader("Calamity/Shader/pointLight.vert", GL_VERTEX_SHADER);
	GLuint fragmentShaderId = loadShader("Calamity/Shader/pointLight.frag", GL_FRAGMENT_SHADER);
	/*GLuint vertexShaderId = loadShader(vertexShader, GL_VERTEX_SHADER);
	GLuint fragmentShaderId = loadShader(fragmentShader, GL_FRAGMENT_SHADER);*/

	programId = glCreateProgram();
	glAttachShader(programId, vertexShaderId);
	glAttachShader(programId, fragmentShaderId);
	glLinkProgram(programId);

	// Check for errors
	GLint programSuccess = GL_TRUE;
	glGetProgramiv(programId, GL_LINK_STATUS, &programSuccess);
	if (programSuccess != GL_TRUE) {
		printf("Error linking program %d!\n", programId);
		printProgramLog(programId);
		glDeleteProgram(programId);
		programId = 0;

		glDetachShader(programId, vertexShaderId);
		glDetachShader(programId, fragmentShaderId);

		glDeleteShader(vertexShaderId);
		glDeleteShader(fragmentShaderId);

		return;
	}

	glDetachShader(programId, vertexShaderId);
	glDetachShader(programId, fragmentShaderId);

	glDeleteShader(vertexShaderId);
	glDeleteShader(fragmentShaderId);

	positionLocation = getAttribLocation("in_Position");

	projectionMatrixLocation = getUniformLocation("projectionMatrix");
	modelViewMatrixLocation = getUniformLocation("modelViewMatrix");

	/*dirLightColorLocation = getUniformLocation("directionalLight.color");
	dirLightDirectionLocation = getUniformLocation("directionalLight.direction");
	dirLightAmbientIntensityLocation = getUniformLocation("directionalLight.ambientIntensity");
	dirLightDiffuseIntensityLocation = getUniformLocation("directionalLight.diffuseIntensity");*/

	/*dirLightLocation.color = getUniformLocation("directionalLight.base.color");
	dirLightLocation.ambientIntensity = getUniformLocation("directionalLight.base.ambientIntensity");
	dirLightLocation.diffuseIntensity = getUniformLocation("directionalLight.base.diffuseIntensity");
	dirLightLocation.direction = getUniformLocation("directionalLight.direction");*/

	pointLightLocation.color = getUniformLocation("pointLight.base.color");
	pointLightLocation.ambientIntensity = getUniformLocation("pointLight.base.ambientIntensity");
	pointLightLocation.diffuseIntensity = getUniformLocation("pointLight.base.diffuseIntensity");
	pointLightLocation.position = getUniformLocation("pointLight.position");
	pointLightLocation.attConstant = getUniformLocation("pointLight.attConstant");
	pointLightLocation.attLinear = getUniformLocation("pointLight.attLinear");
	pointLightLocation.attExponential = getUniformLocation("pointLight.attExponential");

	eyeWorldPosLocation = getUniformLocation("eyeWorldPos");
	matSpecularIntensityLocation = getUniformLocation("matSpecularIntensity");
	matSpecularPowerLocation = getUniformLocation("matSpecularPower");
	screenSizeLocation = getUniformLocation("screenSize");

	GLint positionTextureLocation = getUniformLocation("positionTexture");
	GLint colorTextureLocation = getUniformLocation("colorTexture");
	GLint normalTextureLocation = getUniformLocation("normalTexture");

	bind();
	glUniform1i(positionTextureLocation, 0);
	glUniform1i(colorTextureLocation, 1);
	glUniform1i(normalTextureLocation, 2);
	unbind();
}
Example #14
0
RadialBlurShader::RadialBlurShader(int screenWidth, int screenHeight) {
    this->screenWidth = screenWidth;
    this->screenHeight = screenHeight;

    GLuint vertexShaderId = loadShader("Calamity/Shader/radialBlur.vert", GL_VERTEX_SHADER);
    GLuint fragmentShaderId = loadShader("Calamity/Shader/radialBlur.frag", GL_FRAGMENT_SHADER);

    programId = glCreateProgram();
    glAttachShader(programId, vertexShaderId);
    glAttachShader(programId, fragmentShaderId);
    glLinkProgram(programId);

    // Check for errors
    GLint programSuccess = GL_TRUE;
    glGetProgramiv(programId, GL_LINK_STATUS, &programSuccess);
    if (programSuccess != GL_TRUE) {
        printf("Error linking program %d!\n", programId);
        printProgramLog(programId);
        glDeleteProgram(programId);
        programId = 0;
    }

    glDetachShader(programId, vertexShaderId);
    glDetachShader(programId, fragmentShaderId);

    glDeleteShader(vertexShaderId);
    glDeleteShader(fragmentShaderId);

    positionLocation = getAttribLocation("in_Position");
    texCoordLocation = getAttribLocation("in_TexCoord");
    colorLocation = getAttribLocation("in_Color");

    projectionMatrixLocation = getUniformLocation("projectionMatrix");
    modelViewMatrixLocation = getUniformLocation("modelViewMatrix");

    //useTextureLocation = getUniformLocation("useTexture");

    GLint textureLocation = getUniformLocation("tex");

    /*vec2 radialSize;	// texel size
    float radialBlur;	// blur factor
    float radialBright;	// bright factor
    vec2 radialOrigin;*/

    GLint radialSizeLocation = getUniformLocation("radialSize");
    GLint radialBlurLocation = getUniformLocation("radialBlur");
    GLint radialBrightLocation = getUniformLocation("radialBright");
    GLint radialOriginLocation = getUniformLocation("radialOrigin");

    // for moon
    /*bind();
    glUniform1i(textureLocation, 0);
    glUniform2f(radialSizeLocation, 1.0f/800, 1.0f/600);
    //glUniform1f(radialBlurLocation, 0.99f);
    glUniform1f(radialBlurLocation, 0.8f);
    //glUniform1f(radialBrightLocation, 0.1f);
    glUniform1f(radialBrightLocation, 0.06f);
    //glUniform2f(radialOriginLocation, 0.45f, 0.8f);
    glUniform2f(radialOriginLocation, 0.45f, 0.7f);
    unbind();*/

    // for sun
    bind();
    glUniform1i(textureLocation, 0);
    glUniform2f(radialSizeLocation, 1.0f/screenWidth, 1.0f/screenHeight);
    //glUniform2f(radialSizeLocation, 1.0f/800, 1.0f/600);
    //glUniform1f(radialBlurLocation, 0.99f);
    glUniform1f(radialBlurLocation, 0.8f);
    //glUniform1f(radialBrightLocation, 0.1f);
    glUniform1f(radialBrightLocation, 0.05f);
    //glUniform2f(radialOriginLocation, 0.45f, 0.8f);
    glUniform2f(radialOriginLocation, 0.45f, 0.7f);
    unbind();
}
Example #15
0
void ShaderProgram::addAttribute(const char * name, std::shared_ptr<VertexBufferObject> vbo)
{
    GLint attributeId = getAttribLocation(name);
    attributes[attributeId] = vbo;
}
Example #16
0
void Program::vertexAttribPointer(const std::string &name, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLint offset) const {
	GLuint h = getAttribLocation(name);
	glVertexAttribPointer(h, size, type, normalized, stride, reinterpret_cast<const GLvoid*>(offset));
	glEnableVertexAttribArray(h);
}