示例#1
0
	void setShaderVariables(GLuint bubbleShaderProg)
	{
		GLfloat projMatrix[16];
		GLfloat viewMatrix[16];
		glGetFloatv(GL_PROJECTION_MATRIX, projMatrix);
		glGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix);

		if(GL20Support)
		{
			glUniform1f(glGetUniformLocation(bubbleShaderProg, "elapsedTime"), motionClock.GetElapsedTime());
			glUniform1f(glGetUniformLocation(bubbleShaderProg, "near"), _near);
			glUniform1f(glGetUniformLocation(bubbleShaderProg, "far"), _far);
			glUniform1f(glGetUniformLocation(bubbleShaderProg, "fov"), fov);
			glUniform1f(glGetUniformLocation(bubbleShaderProg, "cursorScrollAmount"), cursorScrollAmount);
			glUniform2f(glGetUniformLocation(bubbleShaderProg, "resolution"), RES_WIDTH, RES_HEIGHT);
			glUniform3f(glGetUniformLocation(bubbleShaderProg, "modelCenter"),  center[0], center[1], center[2]);
			glUniform3f(glGetUniformLocation(bubbleShaderProg, "cameraPos"),  cameraPos[0], cameraPos[1], cameraPos[2]);
			glUniform3f(glGetUniformLocation(bubbleShaderProg, "lookAtPos"),  lookAtPos[0], lookAtPos[1], lookAtPos[2]);
			glUniform3f(glGetUniformLocation(bubbleShaderProg, "cameraUp"),  cameraUp[0], cameraUp[1], cameraUp[2]);
			glUniformMatrix4fv(glGetUniformLocation(bubbleShaderProg, "projMatrix"), 1, false, projMatrix);
			glUniformMatrix4fv(glGetUniformLocation(bubbleShaderProg, "viewMatrix"), 1, false, viewMatrix);
			glUniform2f(glGetUniformLocation(bubbleShaderProg, "lightPos"), lightPos[0], lightPos[1]);
			glUniform2f(glGetUniformLocation(bubbleShaderProg, "cursorAbsolutePos"), cursorAbsolutePos[0], cursorAbsolutePos[1]);
			glUniform2f(glGetUniformLocation(bubbleShaderProg, "cursorDragAmount"), cursorDragAmount[0], cursorDragAmount[1]);
			glUniform2f(glGetUniformLocation(bubbleShaderProg, "lastClickPos"), lastClickPos[0], lastClickPos[1]);
			glUniform2f(glGetUniformLocation(bubbleShaderProg, "lastFrameDragPos"), lastFrameDragPos[0], lastFrameDragPos[1]);
			glUniform1i(glGetUniformLocation(bubbleShaderProg, "mouseButtonDown"), mouseButtonDown);
		} else {
			glUniform1fARB(glGetUniformLocationARB(bubbleShaderProg, "elapsedTime"), Clock.GetElapsedTime());
			glUniform1fARB(glGetUniformLocationARB(bubbleShaderProg, "near"), _near);
			glUniform1fARB(glGetUniformLocationARB(bubbleShaderProg, "far"), _far);
			glUniform1fARB(glGetUniformLocationARB(bubbleShaderProg, "fov"), fov);
			glUniform1fARB(glGetUniformLocationARB(bubbleShaderProg, "cursorScrollAmount"), cursorScrollAmount);
			glUniform2fARB(glGetUniformLocationARB(bubbleShaderProg, "resolution"), RES_WIDTH, RES_HEIGHT);
			glUniform3fARB(glGetUniformLocationARB(bubbleShaderProg, "modelCenter"),  center[0], center[1], center[2]);
			glUniform3fARB(glGetUniformLocationARB(bubbleShaderProg, "cameraPos"),  cameraPos[0], cameraPos[1], cameraPos[2]);
			glUniform3fARB(glGetUniformLocationARB(bubbleShaderProg, "lookAtPos"),  lookAtPos[0], lookAtPos[1], lookAtPos[2]);
			glUniform3fARB(glGetUniformLocationARB(bubbleShaderProg, "cameraUp"),  cameraUp[0], cameraUp[1], cameraUp[2]);
			glUniformMatrix4fvARB(glGetUniformLocationARB(bubbleShaderProg, "projMatrix"), 1, false, projMatrix);
			glUniformMatrix4fvARB(glGetUniformLocationARB(bubbleShaderProg, "viewMatrix"), 1, false, viewMatrix);
			glUniform2fARB(glGetUniformLocationARB(bubbleShaderProg, "cursorAbsolutePos"), cursorAbsolutePos[0], cursorAbsolutePos[1]);
			glUniform2fARB(glGetUniformLocationARB(bubbleShaderProg, "cursorDragAmount"), cursorDragAmount[0], cursorDragAmount[1]);
			glUniform2fARB(glGetUniformLocationARB(bubbleShaderProg, "lastClickPos"), lastClickPos[0], lastClickPos[1]);
			glUniform2fARB(glGetUniformLocationARB(bubbleShaderProg, "lastFrameDragPos"), lastFrameDragPos[0], lastFrameDragPos[1]);
			glUniform1iARB(glGetUniformLocationARB(bubbleShaderProg, "mouseButtonDown"), mouseButtonDown);

		}
	}
示例#2
0
void setShaderVariables(GLuint shaderProg)
{
	GLfloat projMatrix[16];
	GLfloat viewMatrix[16];
	glGetFloatv(GL_PROJECTION_MATRIX, projMatrix);
	glGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix);
		
	if(GL20Support)
	{
		//TODO: Clean up shaders
		glUniform2f(glGetUniformLocation(shaderProg, "resolution"), currentRes[0], currentRes[1]);
		glUniform3f(glGetUniformLocation(shaderProg, "lightPos"),  lightPos[0], lightPos[1], lightPos[2]);
		glUniform3f(glGetUniformLocation(shaderProg, "cameraPos"), camera.getX(), camera.getY(), camera.getZ());
		glUniform3f(glGetUniformLocation(shaderProg, "ambientLight"), 1.0, 1.0, 1.0);
		glUniform3f(glGetUniformLocation(shaderProg, "diffuseLight"), 1.0, 1.0, 1.0);
		glUniform3f(glGetUniformLocation(shaderProg, "specularLight"), 1.0, 1.0, 1.0);
		glUniform1f(glGetUniformLocation(shaderProg, "a"), 1.0);
		glUniform1f(glGetUniformLocation(shaderProg, "b"), 0.1);
		glUniform1f(glGetUniformLocation(shaderProg, "c"), 0.1);
		glUniformMatrix4fv(glGetUniformLocation(shaderProg, "projMatrix"), 1, false, projMatrix);
		glUniformMatrix4fv(glGetUniformLocation(shaderProg, "viewMatrix"), 1, false, viewMatrix);
	}
	else
	{
		//TODO: Match ARB block with block above
		glUniform2fARB(glGetUniformLocationARB(shaderProg, "resolution"), currentRes[0], currentRes[1]);
		glUniform3fARB(glGetUniformLocationARB(shaderProg, "lightPos"),  lightPos[0], lightPos[1], lightPos[2]);
		glUniformMatrix4fvARB(glGetUniformLocationARB(shaderProg, "projMatrix"), 1, false, projMatrix);
		glUniformMatrix4fvARB(glGetUniformLocationARB(shaderProg, "viewMatrix"), 1, false, viewMatrix);
	}
}
/*
 * sendUniform3f
 *
 * parameter name - char*
 * parameter value0 - GLfloat
 * parameter value1 - GLfloat
 * parameter value2 - GLfloat
 * return - bool
 */
bool ShaderObject::sendUniform3f(const char * name, GLfloat value0, GLfloat value1, GLfloat value2) {
    GLint location = getUniLoc(name);
    if (location == -1)
        return false;
    glUniform3fARB(location, value0, value1, value2);
    return true;
} // end sendUniform3f()
示例#4
0
文件: shaders.cpp 项目: wanduow/BSOD
void Shader::bindResource(const char *name, float *data, int count){
	int location = glGetUniformLocationARB(mProgram, name);
	
	//LOG("Got location for %s: %d\n", name, location);

	if(location == -1){
		LOG("Error binding resource %s (size %d)\n", name, count);
		return;
	}
	
	if(count == 3){
		//Log::debug("location=%d, %f %f %f\n", location, data[0], data[1], data[2]);
	}

	//LOG("About to call glUniform%df\n", count);
		
	//hacky!
	//Is this really the best the GL API has to offer :|?
	if(count == 1)		glUniform1fARB(location, data[0]);
	else if(count == 2) glUniform2fARB(location, data[0], data[1]);
	else if(count == 3) glUniform3fARB(location, data[0], data[1], data[2]);
	else if(count == 4) glUniform4fARB(location, data[0], data[1], data[2], data[3]);
	else{
		LOG("Bad count %d in bindResource(%s)\n", count, name);
	}

	//LOG("Called\n");
}
示例#5
0
	void Shader::SetVector3(std::string name, Vector3 value)
	{
		int uloc = SIG_FindUniform(name);
		if (uloc != -1) {
			glUniform3fARB(uloc, value.X(), value.Y(), value.Z());
		} else {
			SIG_LOG("Could not find uniform \"" << name << "\"");
		}
	}
bool Shader::sendUniform3f(char* varname, GLfloat v0, GLfloat v1, GLfloat v2)
{
	GLint loc = GetUniformLocation(varname);
	if (loc == -1) return false;
    
    glUniform3fARB(loc, v0, v1, v2);

    return true;
}
示例#7
0
static void
bind_vec3_arb (cairo_gl_shader_t *shader,
	       const char *name,
	       float value0,
	       float value1,
	       float value2)
{
    GLint location = glGetUniformLocationARB (shader->program, name);
    assert (location != -1);
    glUniform3fARB (location, value0, value1, value2);
}
示例#8
0
// Set a uniform global parameter of the program by name.
void STShaderProgram::SetUniform(const std::string& name,
                                 float v0, float v1, float v2)
{
    GLint location = GetUniformLocation(name);
    if(GLEW_VERSION_2_0) {
        glUniform3f(location, v0, v1, v2);
    }
    else {
        glUniform3fARB(location, v0, v1, v2);
    }
}
示例#9
0
void Shader::setParameter(const std::string &name, float x, float y, float z) {
	if (mShaderProgram) {
		ensureGLContext();

		GLhandleARB program = glCheck(glGetHandleARB(glGetHandleARB(GL_PROGRAM_OBJECT_ARB)));
		glCheck(glUseProgramObjectARB(mShaderProgram));

		GLint location = getParamLocation(name);
		if (location != -1) {
			glCheck(glUniform3fARB(location, x, y, z));
		}

		glCheck(glUseProgramObjectARB(program));
	}
}
示例#10
0
文件: shader.cpp 项目: Ornito/ODFAEG
        void Shader::setParameter(const std::string& name, float x, float y, float z)
        {
            if (m_shaderProgram)
            {
                ensureGlContext();
                // Enable program
                GLhandleARB program = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
                glCheck(glUseProgramObjectARB(m_shaderProgram));

                // Get parameter location and assign it new values
                GLint location = getParamLocation(name);
                if (location != -1)
                    glCheck(glUniform3fARB(location, x, y, z));

                // Disable program
                glCheck(glUseProgramObjectARB(program));
            }
        }
示例#11
0
void Shader::SetParameter(const std::string& name, float x, float y, float z)
{
    if (myShaderProgram)
    {
        // Enable program
        GLhandleARB program = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
        GLCheck(glUseProgramObjectARB(myShaderProgram));

        // Get parameter location and assign it new values
        GLint location = glGetUniformLocationARB(myShaderProgram, name.c_str());
        if (location != -1)
            GLCheck(glUniform3fARB(location, x, y, z));
        else
            Err() << "Parameter \"" << name << "\" not found in shader" << std::endl;

        // Disable program
        GLCheck(glUseProgramObjectARB(program));
    }
}
示例#12
0
文件: brush.c 项目: johnh530/electro
static void use_uniform(struct brush *b, struct uniform *u)
{
    int L;

    /* Apply the uniform values to the OpenGL state. */

    if (GL_has_shader_objects && u && b->shad_prog)
    {
        glUseProgramObjectARB(b->shad_prog);

        if ((L = glGetUniformLocationARB(b->shad_prog, u->name)) != -1)
        {
            const float *k = u->vals;

            int r = u->rows;
            int c = u->cols;

            if      (r == 0 && c == 0)
                glUniform1iARB(L, u->indx);

            else if (r == 1 && c == 1)
                glUniform1fARB(L, k[0]);
            else if (r == 1 && c == 2)
                glUniform2fARB(L, k[0], k[1]);
            else if (r == 1 && c == 3)
                glUniform3fARB(L, k[0], k[1], k[2]);
            else if (r == 1 && c == 4)
                glUniform4fARB(L, k[0], k[1], k[2], k[3]);

            else if (r == 2 && c == 2) glUniformMatrix2fvARB(L, 1, 0, k);
            else if (r == 3 && c == 3) glUniformMatrix3fvARB(L, 1, 0, k);
            else if (r == 4 && c == 4) glUniformMatrix4fvARB(L, 1, 0, k);
        }

        glUseProgramObjectARB(0);
    }
}
示例#13
0
void ProgramUniformGLSL::Set(float fX, float fY, float fZ)
{
	glUniform3fARB(m_nOpenGLUniformLocation, fX, fY, fZ);
}
示例#14
0
void ofxShader::setUniformVariable3f (char const * name, float value, float value2, float value3) {
	if (loaded)
		glUniform3fARB(glGetUniformLocationARB(shader, name), value, value2, value3);
}
示例#15
0
void GLSLShader::SetFloat3(GLint variable, float v0, float v1, float v2)
{
    if (variable!=-1)
        glUniform3fARB(variable, v0, v1, v2);
}
示例#16
0
void
Butterfly::draw()
{
    // the position of the butterfly
    // used by the shader
    glUniform3fARB(glGetUniformLocationARB(shader->getPid(), "worldpos"), pos[0], pos[1], pos[2]);

    glDepthMask(GL_TRUE);
    glEnable(GL_DEPTH_TEST);

    // local frame
    float rot[16] =
    {
        binormal[0], binormal[1], binormal[2], 0,
        dir[0], dir[1], dir[2], 0,
        normal[0], normal[1], normal[2], 0,
        pos[0], pos[1], pos[2], 1
    };
    glPushMatrix();
    glMultMatrixf(rot);
//	fprintf(stdout, "%f, %f, %f\n", pos[0], pos[1], pos[2]);

    for(int j=0; j<NUM_OBJS; j++)
    {
        glPushMatrix();
        float tmp = fabs(wing_cnt)-wing_angle;
        if(j<(NUM_OBJS>>1)) glRotatef(tmp, 0, 1, 0);
        else glRotatef(-tmp, 0, 1, 0);
        glScalef(size, size, size);

        // thickness/bump mapping texture
        glActiveTexture(GL_TEXTURE0);
        tex[(j*2)%NUM_TEXTURES].bind();
        // backface texture
        glActiveTexture(GL_TEXTURE1);
        tex[(j*2+1)%NUM_TEXTURES].bind();

//		if(j%2==0)
//		{
//			glEnable (GL_POLYGON_OFFSET_FILL);
//			glPolygonOffset (1., 1.);
//		}

        glBegin(GL_TRIANGLES);
        for(int i=0; i<geom[j].numFacets*3; i++)
        {
            glNormal3fv(geom[j].normals[geom[j].normalIdx[i]]);
            glMultiTexCoord2fv(GL_TEXTURE0, geom[j].texcoords[geom[j].texcoordIdx[i]]);
            glVertex3fv(geom[j].verts[geom[j].vertIdx[i]]);
        }
        glEnd();

//		if(j%2==0) glDisable (GL_POLYGON_OFFSET_FILL);

        glActiveTexture(GL_TEXTURE0);
        tex[(j*2)%NUM_TEXTURES].unbind();
        glActiveTexture(GL_TEXTURE1);
        tex[(j*2+1)%NUM_TEXTURES].unbind();

        glPopMatrix();

    }
示例#17
0
void Shader::SetUniVar(char* sVarName, float fValue0, float fValue1, float fValue2)
{
	//设置初始一致变量值
	glUniform3fARB(getUniLoc(m_Program, sVarName), fValue0, fValue1, fValue2); 

}
void RawVolumeModelRenderer::_putVolumeDataToShader(
        const VolumeInfo&   volumeInfo,
        const float         sliceDistance,
        const eq::Matrix4f& invRotationM,
        const eq::Vector4f& taintColor,
        const int           normalsQuality )
{
    LBASSERT( _glewContext );

    GLhandleARB shader = _shaders.getProgram();
    LBASSERT( shader );

    const DataInTextureDimensions& TD = volumeInfo.TD;

    GLint tParamNameGL;

    // Put texture coordinates modifyers to the shader
    tParamNameGL = glGetUniformLocationARB( shader, "W"  );
    glUniform1fARB( tParamNameGL, TD.W );

    tParamNameGL = glGetUniformLocationARB( shader, "H"  );
    glUniform1fARB( tParamNameGL, TD.H );

    tParamNameGL = glGetUniformLocationARB( shader, "D"  );
    glUniform1fARB( tParamNameGL, TD.D  );

    tParamNameGL = glGetUniformLocationARB( shader, "Do" );
    glUniform1fARB( tParamNameGL, TD.Do );

    tParamNameGL = glGetUniformLocationARB( shader, "Db" );
    glUniform1fARB( tParamNameGL, TD.Db );

    // Put Volume data to the shader
    glActiveTextureARB( GL_TEXTURE1 );
    glBindTexture( GL_TEXTURE_2D, volumeInfo.preint ); //preintegrated values
    tParamNameGL = glGetUniformLocationARB( shader, "preInt" );
    glUniform1iARB( tParamNameGL,  1    ); //f-shader

    // Activate last because it has to be the active texture
    glActiveTextureARB( GL_TEXTURE0 );
    glBindTexture( GL_TEXTURE_3D, volumeInfo.volume ); //gx, gy, gz, val
    glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER,GL_LINEAR    );

    tParamNameGL = glGetUniformLocationARB(  shader,  "volume"        );
    glUniform1iARB( tParamNameGL ,  0            ); //f-shader

    tParamNameGL = glGetUniformLocationARB(  shader,  "sliceDistance" );
    glUniform1fARB( tParamNameGL,  sliceDistance ); //v-shader

    tParamNameGL = glGetUniformLocationARB(  shader,  "perspProj"     );
    glUniform1fARB( tParamNameGL,  _ortho ? 0.0f : 1.0f ); //v-shader

    tParamNameGL = glGetUniformLocationARB(  shader,  "shininess"     );
    glUniform1fARB( tParamNameGL,  8.0f         ); //f-shader

    tParamNameGL = glGetUniformLocationARB(  shader,  "taint"         );
    glUniform4fARB( tParamNameGL,   taintColor.r(),
                                    taintColor.g(),
                                    taintColor.b(),
                                    taintColor.a()  ); //f-shader

    tParamNameGL = glGetUniformLocationARB(  shader,  "sizeVec"       );
    glUniform3fARB( tParamNameGL,   volumeInfo.voxelSize.W,
                                    volumeInfo.voxelSize.H,
                                    volumeInfo.voxelSize.D  ); //f-shader

    tParamNameGL = glGetUniformLocationARB(  shader,  "normalsQuality");
    glUniform1iARB( tParamNameGL, normalsQuality ); //f-shader

    // rotate viewPosition in the opposite direction of model rotation
    // to keep light position constant but not recalculate normals
    // in the fragment shader
    // viewPosition = invRotationM * eq::Vector4f( 0, 0, 1, 0 );
    tParamNameGL = glGetUniformLocationARB(  shader,  "viewVec"       );
    glUniform3fARB( tParamNameGL, invRotationM.array[8],
                                  invRotationM.array[9],
                                  invRotationM.array[10] ); //f-shader
}
示例#19
0
文件: shader.hpp 项目: dbc/pyPolyCSG
 ShaderProgram &u(const char *var, GLfloat x, GLfloat y, GLfloat z) { glUniform3fARB(uniform(var), x, y, z); return *this; }
示例#20
0
void glsl_program :: renderARB()
{
  if (m_linked) {
    glUseProgramObjectARB( m_programARB );
    for(int i=0; i<m_uniformCount; i++)
      {
        if(m_flag[i])
	  {
	    switch (m_type[i])
              {
		/* float vectors */
              case GL_FLOAT:
                glUniform1fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]) );
		break;
              case GL_FLOAT_VEC2_ARB:
                glUniform2fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), static_cast<GLfloat>(m_param[i][1]) );
		break;
              case GL_FLOAT_VEC3_ARB:
                glUniform3fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), static_cast<GLfloat>(m_param[i][1]),
                                static_cast<GLfloat>(m_param[i][2]) );
		break;
              case GL_FLOAT_VEC4_ARB:
                glUniform4fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), static_cast<GLfloat>(m_param[i][1]),
                                static_cast<GLfloat>(m_param[i][2]), static_cast<GLfloat>(m_param[i][3]) );
		break;

		/* int vectors */
              case GL_INT:
                glUniform1iARB( m_loc[i], static_cast<GLint>(m_param[i][0]) );
		break;
              case GL_INT_VEC2_ARB:
                glUniform2iARB( m_loc[i], static_cast<GLint>(m_param[i][0]), static_cast<GLint>(m_param[i][1]) );
		break;
              case GL_INT_VEC3_ARB:
                glUniform3iARB( m_loc[i], static_cast<GLint>(m_param[i][0]), static_cast<GLint>(m_param[i][1]),
                                static_cast<GLint>(m_param[i][2]) );
		break;
              case GL_INT_VEC4_ARB:
                glUniform4iARB( m_loc[i], static_cast<GLint>(m_param[i][0]), static_cast<GLint>(m_param[i][1]),
                                static_cast<GLint>(m_param[i][2]), static_cast<GLint>(m_param[i][3]) );
		break;

		/* bool vectors */
	      case GL_BOOL_ARB:
                glUniform1fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]) );
		break;
              case GL_BOOL_VEC2_ARB:
                glUniform2fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), static_cast<GLfloat>(m_param[i][1]) );
		break;
              case GL_BOOL_VEC3_ARB:
                glUniform3fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), static_cast<GLfloat>(m_param[i][1]),
                                static_cast<GLfloat>(m_param[i][2]) );
		break;
              case GL_BOOL_VEC4_ARB:
                glUniform4fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), static_cast<GLfloat>(m_param[i][1]),
                                static_cast<GLfloat>(m_param[i][2]), static_cast<GLfloat>(m_param[i][3]) );
		break;

		/* float matrices */
              case GL_FLOAT_MAT2_ARB:
                // GL_TRUE = row major order, GL_FALSE = column major
                glUniformMatrix2fvARB( m_loc[i], 1, GL_FALSE, m_param[i] );
		break;
              case GL_FLOAT_MAT3_ARB:
                glUniformMatrix3fvARB( m_loc[i], 1, GL_FALSE, m_param[i] );
		break;
              case GL_FLOAT_MAT4_ARB:
                glUniformMatrix4fvARB( m_loc[i], 1, GL_FALSE, m_param[i] );
		break;

		/* textures */
	      case GL_SAMPLER_1D_ARB: break;
	      case GL_SAMPLER_2D_ARB:
		glUniform1iARB(m_loc[i], m_param[i][0]);
		break;
	      case GL_SAMPLER_3D_ARB: break;
	      case GL_SAMPLER_CUBE_ARB: break;
	      case GL_SAMPLER_1D_SHADOW_ARB: break;
	      case GL_SAMPLER_2D_SHADOW_ARB: break;
	      case GL_SAMPLER_2D_RECT_ARB:
		glUniform1iARB(m_loc[i], m_param[i][0]);
		break;
              default:
		;
              }
            // remove flag because the value is in GL's state now...
            m_flag[i]=0;
	  }
      }
    //  glUniform1iARB(glGetUniformLocationARB(program_object, "MyTex1"), 1);
  } else {
    /* JMZ: this is really annoying... */
    //error("no program linked");
  }
}
示例#21
0
void shade::GLSLARBWrapper::Uniform3f(Handle index, float x, float y, float z)
{
  glUniform3fARB(index, x, y, z);
}
示例#22
0
void ofxShader::setUniform3f (string name, float value, float value2, float value3) {
	if(bLoaded)
		glUniform3fARB(glGetUniformLocationARB(shader, name.c_str()), value, value2, value3);
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_ARBShaderObjects_nglUniform3fARB(JNIEnv *env, jclass clazz, jint location, jfloat v0, jfloat v1, jfloat v2, jlong function_pointer) {
	glUniform3fARBPROC glUniform3fARB = (glUniform3fARBPROC)((intptr_t)function_pointer);
	glUniform3fARB(location, v0, v1, v2);
}
示例#24
0
文件: Uniform.hpp 项目: johans/lab4
inline void Uniform<float, 3>::apply()
{
    glUniform3fARB(location, value[0], value[1], value[2]);
}
示例#25
0
文件: Shader.cpp 项目: BSkin/MTG
void Shader::setUniformf3(const std::string &variable, float value0, float value1, float value2) {
	if (shaderProgram != -1) 
		glUniform3fARB (glGetUniformLocationARB (shaderProgram, variable.c_str ()), value0, value1, value2);
}
void WShaderProgram::setValue3f( const char *name, float v1,float v2, float v3 )
{
	GLint loc = glGetUniformLocationARB( programId(), name );
	glUniform3fARB( loc, v1, v2, v3 );
}
示例#27
0
文件: main.cpp 项目: aashish24/myexp
///////////////////////////////////////////////////////////////////////////////
//
// Render scene.
//
///////////////////////////////////////////////////////////////////////////////
void RenderScene()
{
   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, _gSceneFbo.GetFBO());

   // Clear each rendering target first before drawing the scene.
   glUseProgram(_gClearRenderTargetShader);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
   RenderScreenQuad();

   // Now draw scene once destinations have been cleared.
   glUseProgram(_gSetRenderTargetShader);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
   RenderScenePass();

   // For BLUR the code need to do the following.
   // Use same or different FBO.
   // Our Display shader will become SSAO shader.
   // RenderSceneQuad().. using mostly the code below.
   // But using a HBLUR render target shader.
   // Now Again do RenderSceneQuad() this time with VBLUR shader.
   // Now draw the final image.

   // Draw to the back buffer using deferred shading.
   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, _gSsaoFbo.GetFBO());
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();

   glUseProgram(_gSsaoShader);
   glActiveTexture(GL_TEXTURE0_ARB);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest1());
   glUniform1i(_gSsaoNormals, 0);

   glActiveTexture(GL_TEXTURE1_ARB);
   glBindTexture(GL_TEXTURE_2D, _gRandomSampler);
   glUniform1i(_gSsaoRandoms, 1);

   glActiveTexture(GL_TEXTURE2_ARB);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest2());
   glUniform1i(_gSsaoDepths, 2);

   glActiveTexture(GL_TEXTURE3_ARB);
   glBindTexture(GL_TEXTURE_2D, _gRandomSampler);
   glUniform2fARB(_gSsaoOffset, 1.0f / (float)WIDTH, 1.0f / (float)HEIGHT);

   RenderScreenQuad();

   // Horizontal blur.
   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, _gHorizontalBlurFbo.GetFBO());
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
   glUseProgram(_gHorizontalBlurShader);

   glActiveTexture(GL_TEXTURE0_ARB);
   glBindTexture(GL_TEXTURE_2D, _gSsaoFbo.GetColorDest0());

   glActiveTexture(GL_TEXTURE1_ARB);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest1());

   glActiveTexture(GL_TEXTURE2_ARB);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest2());

   glUniform1i(_gHorizontalBlurSceneSampler, 0);
   glUniform1i(_gHorizontalBlurSceneSamplerNormal, 1);
   glUniform1i(_gHorizontalBlurSceneSamplerDepth, 2);

   RenderScreenQuad();

   // Vertical blur.
   glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, _gVerticalBlurFbo.GetFBO() );
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
   glUseProgram( _gVerticalBlurShader );

   glActiveTexture(GL_TEXTURE0);
   glBindTexture(GL_TEXTURE_2D, _gHorizontalBlurFbo.GetColorDest0());
   glActiveTexture(GL_TEXTURE1);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest1());
   glActiveTexture(GL_TEXTURE2);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest2());

   glUniform1i( _gVerticalBlurSceneSampler, 0 );
   glUniform1i( _gVerticalBlurSceneNormalSampler, 1 );
   glUniform1i( _gVerticalBlurSceneDepthSampler, 2 );

   RenderScreenQuad();

   // Final stage.
   glUseProgram( _gRenderShader );
   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
   glUniform2fARB(_gOffset, 1.0f / (float)WIDTH, 1.0f / (float)HEIGHT);
   glUniform3fARB(_gLight1Pos, 0.0f, 20.0f,  15.0f);
   glUniform4fARB(_gLight1AmbientColor, 0.4f, 0.4f, 0.4f, 1.0f);
   glUniform4fARB(_gLight1DiffuseColor, 0.6f, 0.6f, 0.6f, 1.0f);
   glUniform4fARB(_gLight1SpecularColor, 0.6f, 0.6f, 0.6f, 1.0f);

   glUniform3fARB(_gLight2Pos, 100.0f, 20.0f, 15.0f);
   glUniform4fARB(_gLight2AmbientColor, 0.2f, 0.2f, 0.2f, 1.0f);
   glUniform4fARB(_gLight2DiffuseColor, 0.1f, 0.1f, 0.1f, 1.0f);
   glUniform4fARB(_gLight2SpecularColor, 0.5f, 0.7f, 0.5f, 1.0f);

   glActiveTexture(GL_TEXTURE0_ARB);
   glBindTexture(GL_TEXTURE_2D, _gVerticalBlurFbo.GetColorDest0());
   glUniform1i(_gAmbientOcclusion, 0);

   glActiveTexture(GL_TEXTURE1_ARB);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest0());
   glUniform1i(_gSceneColors, 1);

   glActiveTexture(GL_TEXTURE2_ARB);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest1());
   glUniform1i(_gSceneNormals, 2);

   glActiveTexture(GL_TEXTURE3_ARB);
   glBindTexture(GL_TEXTURE_2D, _gSceneFbo.GetColorDest2());
   glUniform1i(_gSceneDepths, 2);

   RenderScreenQuad();

   glutSwapBuffers();
   glutPostRedisplay();
}
示例#28
0
	void KShaderProgram::setParam3(Kite::I16 Location, F32 Value1, F32 Value2, F32 Value3) const{
		if (_kprogId && Location >= 0){
			DGL_CALL(glUniform3fARB(Location, Value1, Value2, Value3));
		}
	}
示例#29
0
void ofxShader::setUniformVariable3f (char * name, float value, float value2, float value3){
	if (bLoaded == true){
		glUniform3fARB(glGetUniformLocationARB(shader, name), value, value2, value3);
	}
}
示例#30
0
void Shader::setVector3Uniform(const std::string& _name, float _v1, float _v2, float _v3) const
{
	assert(programObj_ != 0);
	glUniform3fARB(getUniformLocation(_name.c_str()), _v1, _v2, _v3);
}