X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fmodel3d-view%2Fmodel3d-view-impl.cpp;h=5e6340fc6938d55b79e2a913b582fb254fa872fb;hb=a80b01449dd3c91d092b56e16e0cea06b32584e7;hp=7799287145348a6df46e8e9d851fddb9ef31d665;hpb=0e2a94091f003b98d093e7489208bcdf51e7f206;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/model3d-view/model3d-view-impl.cpp b/dali-toolkit/internal/controls/model3d-view/model3d-view-impl.cpp index 7799287..5e6340f 100644 --- a/dali-toolkit/internal/controls/model3d-view/model3d-view-impl.cpp +++ b/dali-toolkit/internal/controls/model3d-view/model3d-view-impl.cpp @@ -313,7 +313,7 @@ void Model3dView::SetProperty( BaseObject* object, Property::Index index, const } case Toolkit::Model3dView::Property::MATERIAL_URL: { - if( value.Get(impl.mMaterialUrl) ) + if( value.Get(impl.mTextureSetUrl) ) { impl.LoadMaterial(); impl.CreateMaterial(); @@ -377,7 +377,7 @@ Property::Value Model3dView::GetProperty( BaseObject* object, Property::Index in } case Toolkit::Model3dView::Property::MATERIAL_URL: { - value = impl.mMaterialUrl; + value = impl.mTextureSetUrl; break; } case Toolkit::Model3dView::Property::IMAGES_URL: @@ -448,9 +448,9 @@ void Model3dView::OnInitialize() { //Create empty versions of the geometry and material so we always have a Renderer Geometry mesh = Geometry::New(); - Shader shader = Shader::New( SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER, (Shader::ShaderHints)(Shader::HINT_REQUIRES_SELF_DEPTH_TEST | Shader::HINT_MODIFIES_GEOMETRY) ); - Material material = Material::New( shader ); - mRenderer = Renderer::New( mesh, material ); + Shader shader = Shader::New( SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER ); + mRenderer = Renderer::New( mesh, shader ); + } void Model3dView::LoadGeometry() @@ -482,7 +482,7 @@ void Model3dView::LoadMaterial() std::streampos fileSize; Dali::Vector fileContent; - if( FileLoader::ReadFile(mMaterialUrl, fileSize, fileContent, FileLoader::TEXT) ) + if( FileLoader::ReadFile(mTextureSetUrl, fileSize, fileContent, FileLoader::TEXT) ) { mObjLoader.LoadMaterial(fileContent.Begin(), fileSize, mTexture0Url, mTexture1Url, mTexture2Url); } @@ -525,6 +525,7 @@ void Model3dView::CreateGeometry() if( mRenderer ) { mRenderer.SetGeometry( mMesh ); + mRenderer.SetProperty( Renderer::Property::DEPTH_WRITE_MODE, Renderer::DEPTH_WRITE_ON ); } } } @@ -553,32 +554,33 @@ void Model3dView::UpdateShaderUniforms() void Model3dView::CreateMaterial() { - if( mObjLoader.IsMaterialLoaded() && (mTexture0Url != "")) + if( mObjLoader.IsMaterialLoaded() && (mTexture0Url != "") && mObjLoader.IsTexturePresent() ) { - if( (mTexture2Url != "") && (mTexture1Url != "") && (mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_NORMAL_MAP)) + if( (mTexture2Url != "") && (mTexture1Url != "") && (mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_NORMAL_MAP) && mObjLoader.IsNormalMapPresent() ) { - mShader = Shader::New( NRMMAP_VERTEX_SHADER, NRMMAP_FRAGMENT_SHADER, (Shader::ShaderHints)(Shader::HINT_REQUIRES_SELF_DEPTH_TEST | Shader::HINT_MODIFIES_GEOMETRY) ); + mShader = Shader::New( NRMMAP_VERTEX_SHADER, NRMMAP_FRAGMENT_SHADER ); } - else if(mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_TEXTURE) + else if( mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_TEXTURE ) { - mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER, (Shader::ShaderHints)(Shader::HINT_REQUIRES_SELF_DEPTH_TEST | Shader::HINT_MODIFIES_GEOMETRY) ); + mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); } else { - mShader = Shader::New( SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER, (Shader::ShaderHints)(Shader::HINT_REQUIRES_SELF_DEPTH_TEST | Shader::HINT_MODIFIES_GEOMETRY) ); + mShader = Shader::New( SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER ); } } else { - mShader = Shader::New( SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER, (Shader::ShaderHints)(Shader::HINT_REQUIRES_SELF_DEPTH_TEST | Shader::HINT_MODIFIES_GEOMETRY) ); + mShader = Shader::New( SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER ); } - mMaterial = Material::New( mShader ); + mTextureSet = TextureSet::New(); if( mRenderer ) { - mRenderer.SetMaterial( mMaterial ); - mRenderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, Renderer::NONE); + mRenderer.SetTextures( mTextureSet ); + mRenderer.SetShader( mShader ); + mRenderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, Renderer::CULL_NONE); } UpdateShaderUniforms(); @@ -586,7 +588,7 @@ void Model3dView::CreateMaterial() void Model3dView::LoadTextures() { - if( !mMaterial ) + if( !mTextureSet ) return ; if( mTexture0Url != "" ) @@ -597,7 +599,7 @@ void Model3dView::LoadTextures() Image tex0 = ResourceImage::New( imgUrl ); if( tex0 ) { - mMaterial.AddTexture( tex0, "sDiffuse" ); + mTextureSet.SetImage( 0u, tex0 ); } } @@ -609,7 +611,7 @@ void Model3dView::LoadTextures() Image tex1 = ResourceImage::New( imgUrl ); if (tex1) { - mMaterial.AddTexture( tex1, "sNormal" ); + mTextureSet.SetImage( 1u, tex1 ); } } @@ -621,7 +623,7 @@ void Model3dView::LoadTextures() Image tex2 = ResourceImage::New( imgUrl ); if( tex2 ) { - mMaterial.AddTexture( tex2, "sGloss" ); + mTextureSet.SetImage( 2u, tex2 ); } } }