コード例 #1
0
void RenderMethod_Grass_CG::setShaderData(const GeometryChunk &gc) {
	const Renderer::Light &light0 = renderer->getLight();
	
	ASSERT(light0.type == Renderer::Light::POINT, "point lights only pls");
	
	mat4 MI = (gc.transformation).inverse(); // world -> object projection
	
	// Set the position of the light (in object-space)
	vec3 LightPosObj = MI.transformVector(light0.position);
	cgGLSetParameter3fv(cgLightPos, LightPosObj);
	
	// Set the position of the camera (in object-space)
	vec3 CameraPosWld = renderer->getCamera().getPosition();
	vec3 CameraPosObj = MI.transformVector(CameraPosWld);
	cgGLSetParameter3fv(cgCameraPos, CameraPosObj);
	
	// Send the inverse view matrix
	mat4 ViewI = getViewI();
	cgGLSetMatrixParameterfr(cgViewI, ViewI);
	
	// Send the camera right vector (in object-space)
	vec3 CameraRightEye = vec3(1.0, 0.0, 0.0);
	vec3 CameraRightObj = ViewI.transformVector(CameraRightEye);
	cgGLSetParameter3fv(cgCameraRight, CameraRightObj);
	
	// Send the camera right vector (in object-space)
	vec3 CameraUpEye = vec3(0.0, 1.0, 0.0);
	vec3 CameraUpObj = ViewI.transformVector(CameraUpEye);
	cgGLSetParameter3fv(cgCameraUp, CameraUpObj);
	
	// Set the light properties
	cgGLSetParameter1fv(cgkC, &light0.kC);
	cgGLSetParameter1fv(cgkL, &light0.kL);
	cgGLSetParameter1fv(cgkQ, &light0.kQ);
	
	// Set the material properties
	cgGLSetParameter4fv(cgKa, gc.material.Ka);
	cgGLSetParameter4fv(cgKd, gc.material.Kd);
	
	// Set animation time
	cgGLSetParameter1fv(cgTime, &angle);
	
	// Everything else
	cgGLSetStateMatrixParameter(cgMVP, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY);
	cgGLSetStateMatrixParameter(cgView, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY);
}
コード例 #2
0
void Effect::setMatrix( const char *_name, const float *_matrix ) {
  CGparameter param = cgGetNamedEffectParameter( effect, _name );
  cgGLSetMatrixParameterfr( param, _matrix );
}
コード例 #3
0
	void	IOGLBaseShader::SetUniform(const CString& strName, const Math::CMatrix& mValue){
		auto uParam = this->GetParameter(strName);

		cgGLSetMatrixParameterfr(uParam, mValue[0].GetPointer());
	}