void PhysicallyBasedShadingApp::update() { // animate the light if( mAnimateLight ){ mLightPosition = vec3( cos( mTime * 0.5f ) * 8.0f, 8.0f + sin( mTime * 0.25f ) * 3.5f, sin( mTime * 0.5f ) * 8.0f ); mTime += 0.025f; } // check for camera properties change CameraPersp cam = mMayaCam.getCamera(); float sensorHeight = mSensorSize / getWindowAspectRatio(); float fov = 180.0f / M_PI * 2.0f * math<float>::atan( 0.5f * sensorHeight / mFocalLength ); if( mFocalLengthPreset != 0 && mFocalLengthPreset != mPrevFocalLengthPreset ){ mFocalLength = sFocalPresetsValues[ mFocalLengthPreset ]; } if( mSensorSizePreset != 0 && mSensorSizePreset != mPrevSensorSizePreset ){ mSensorSize = sSensorPresetsValues[ mSensorSizePreset ]; } if( mFStopPreset != 0 && mFStopPreset != mPrevFStopPreset ){ mFStop = sFStopPresetsValues[ mFStopPreset ]; } mPrevFocalLengthPreset = mFocalLengthPreset; mPrevSensorSizePreset = mSensorSizePreset; mPrevFStopPreset = mFStopPreset; // update the fov if necessary if( cam.getFov() != fov ){ cam.setFov( fov ); mMayaCam.setCurrentCam( cam ); } }
void MarionetteZooApp::update() { mFps = getAverageFps(); CameraPersp cam = mMayaCam.getCamera(); if ( cam.getFov() != mCameraFov ) { cam.setPerspective( mCameraFov, getWindowAspectRatio(), 0.1f, 1000.0f ); mMayaCam.setCurrentCam( cam ); } if( mCameraLock ) { if( mCameraEyePoint != cam.getEyePoint() ) { cam.setEyePoint( mCameraEyePoint ); mMayaCam.setCurrentCam( cam ); } if( mCameraCenterOfInterestPoint != cam.getCenterOfInterestPoint() ) { cam.setCenterOfInterestPoint( mCameraCenterOfInterestPoint ); mMayaCam.setCurrentCam( cam ); } } else { mCameraEyePoint = cam.getEyePoint(); mCameraCenterOfInterestPoint = cam.getCenterOfInterestPoint(); } // mLight->setDirection( mLightDirection * Vec3f( 1.f, 1.f, -1.f ) ); // mLight->update( cam ); mBulletWorld->update(); mModelManager->update(); }
void PTWeekend::draw() { /* * BEGIN - each frame part */ /* Enqueue kernel for execution */ glm::vec3 origin,lower_left, hor, ver; float theta = camera.getFov() * M_PI / 180.0f; float half_height = tan(theta / 2.0f); float half_width = camera.getAspectRatio() * half_height; origin = camera.getEyePoint(); glm::vec3 u, v, w; w = -glm::normalize(camera.getViewDirection()); //odd... u = glm::normalize(glm::cross(glm::vec3(0,1,0), w)); v = glm::cross(w, u); lower_left = origin - half_width * u - half_height * v - w; hor = 2.0f * half_width * u; ver = 2.0f * half_height * v; pt_assert(cl_set_pinhole_cam_arg(origin, lower_left, hor, ver, cam_buffer, cmd_queue), "Could not fill camera buffer"); clStatus = cmd_queue.enqueueAcquireGLObjects(&img_buffer, NULL, NULL); pt_assert(clStatus, "Could not acquire gl objects"); cl::Event profiling_evt; clStatus = cmd_queue.enqueueNDRangeKernel(kernel, cl::NDRange(0,0), cl::NDRange(img_width, img_height), cl::NDRange(local_width,local_height), NULL, &profiling_evt); profiling_evt.wait(); pt_assert(clStatus, "Could not enqueue the kernel"); clStatus = cmd_queue.enqueueReleaseGLObjects(&img_buffer, NULL, NULL); pt_assert(clStatus, "Could not release gl objects"); cmd_queue.finish(); cl_ulong time_start = profiling_evt.getProfilingInfo<CL_PROFILING_COMMAND_START>(); cl_ulong time_end = profiling_evt.getProfilingInfo<CL_PROFILING_COMMAND_END>(); cl_ulong total_time = time_end - time_start; std::cout << "Total time: " << total_time * 0.001 * 0.001 << " ms \n"; /* * END - each frame part */ gl::draw(imgTex, Rectf(0, 0, getWindowWidth(), getWindowHeight())); }
void FrustumCullingApp::update() { mFrustumPlaneCached = false; mAngle -= ( mAngle - mAngleDest ) * 0.1f; mEye -= ( mEye - mEyeDest ) * 0.2f; mEyeNormal = Vec3f( sin( mAngle ), 0.0f, cos( mAngle ) ); mCenter = mEye + mEyeNormal * 50.0f; mCam.setPerspective( 25.0f, getWindowAspectRatio(), 100.0f, 350.0f ); mCam.lookAt( mEye, mCenter, mUp ); calcNearAndFarClipCoordinates( mCam ); if( mIsWatchingCam ){ mREye.lerpEq( mDecay, Vec3f( mEye.x + cos( mCounter * 0.003f ) * 300.0f, 100.0f, mEye.y + sin( mCounter * 0.003f ) * 300.0f ) ); mRCenter.lerpEq( mDecay, Vec3f( mEye + mEyeNormal * 250.0f ) ); mFov -= ( mFov - 60.0f ) * mDecay; mNear -= ( mNear - 10.0f ) * mDecay; mFar -= ( mFar - 1500.0f ) * mDecay; } else { mREye.lerpEq( mDecay, mEye ); mRCenter.lerpEq( mDecay, mCenter ); mFov -= ( mFov - mCam.getFov() ) * mDecay; mNear -= ( mNear - mCam.getNearClip() ) * mDecay; mFar -= ( mFar - mCam.getFarClip() ) * mDecay; } mRenderCam.setPerspective( mFov, getWindowAspectRatio(), 10.0f, 1500.0f ); mRenderCam.lookAt( mREye, mRCenter, mUp ); gl::setMatrices( mRenderCam ); mCounter += 1.0f; }