| 128 | }; |
| 129 | |
| 130 | void NormalMappingApp::setup() |
| 131 | { |
| 132 | // setup camera and lights |
| 133 | mCamera.lookAt( vec3( 0.2f, 0.4f, 1.0f ), vec3(0.0f, 0.425f, 0.0f) ); |
| 134 | mCamera.setNearClip( 0.01f ); |
| 135 | mCamera.setFarClip( 100.0f ); |
| 136 | |
| 137 | mLightLantern.diffuse = Color(0.9f, 0.6f, 0.3f); |
| 138 | mLightLantern.specular = Color(0.9f, 0.6f, 0.3f); |
| 139 | |
| 140 | mLightAmbient.diffuse = Color(0.2f, 0.6f, 1.0f); |
| 141 | mLightAmbient.specular = Color(0.05f, 0.15f, 0.25f); |
| 142 | |
| 143 | // setup perlin noise to easily animate our lantern light source |
| 144 | mPerlin = Perlin(4, 65535); |
| 145 | |
| 146 | // default settings |
| 147 | mMeshBounds = AxisAlignedBox( vec3( 0 ), vec3( 1 ) ); |
| 148 | |
| 149 | mAutoRotate = true; |
| 150 | mAutoRotateAngle = 0.0f; |
| 151 | |
| 152 | mAnimateLantern = true; |
| 153 | |
| 154 | mEnableNormalMap = true; |
| 155 | mShowNormalsAndTangents = false; |
| 156 | |
| 157 | mViewMode = ViewMode::Default; |
| 158 | |
| 159 | // load assets |
| 160 | try { |
| 161 | // load our copyright message |
| 162 | mCopyrightMap = gl::Texture::create( loadImage( loadAsset("copyright.png") ) ); |
| 163 | |
| 164 | // load textures |
| 165 | auto texFormat = gl::Texture2d::Format().loadTopDown(); |
| 166 | mDiffuseMap = gl::Texture::create( loadImage( loadAsset("leprechaun_diffuse.jpg") ), texFormat ); |
| 167 | mSpecularMap = gl::Texture::create( loadImage( loadAsset("leprechaun_specular.jpg") ), texFormat ); |
| 168 | mNormalMap = gl::Texture::create( loadImage( loadAsset("leprechaun_normal.jpg") ), texFormat ); |
| 169 | mEmissiveMap = gl::Texture::create( loadImage( loadAsset("leprechaun_emmisive.png") ), texFormat ); |
| 170 | |
| 171 | // load our shaders and set the non-varying uniforms |
| 172 | #if ! defined( CINDER_GL_ES ) |
| 173 | mShaderNormalMapping = gl::GlslProg::create( loadAsset("normal_mapping_vert.glsl"), loadAsset("normal_mapping_frag.glsl") ); |
| 174 | |
| 175 | gl::GlslProg::Format fmt; |
| 176 | fmt.vertex( loadAsset("wireframe_vert.glsl") ); |
| 177 | fmt.geometry( loadAsset("wireframe_geom.glsl") ); |
| 178 | fmt.fragment( loadAsset("wireframe_frag.glsl") ); |
| 179 | mShaderWireframe = gl::GlslProg::create( fmt ); |
| 180 | #else |
| 181 | mShaderNormalMapping = gl::GlslProg::create( loadAsset("normal_mapping_vert_es2.glsl"), loadAsset("normal_mapping_frag_es2.glsl") ); |
| 182 | #endif |
| 183 | |
| 184 | mShaderNormalMapping->uniform( "uDiffuseMap", 0 ); |
| 185 | mShaderNormalMapping->uniform( "uSpecularMap", 1 ); |
| 186 | mShaderNormalMapping->uniform( "uNormalMap", 2 ); |
| 187 | mShaderNormalMapping->uniform( "uEmmisiveMap", 3 ); |
nothing calls this directly
no test coverage detected