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); }
void Effect::setMatrix( const char *_name, const float *_matrix ) { CGparameter param = cgGetNamedEffectParameter( effect, _name ); cgGLSetMatrixParameterfr( param, _matrix ); }
void IOGLBaseShader::SetUniform(const CString& strName, const Math::CMatrix& mValue){ auto uParam = this->GetParameter(strName); cgGLSetMatrixParameterfr(uParam, mValue[0].GetPointer()); }