diff options
| author | Anton Novoselov <[email protected]> | 2017-08-01 12:53:38 +0300 |
|---|---|---|
| committer | Anton Novoselov <[email protected]> | 2017-08-01 12:53:38 +0300 |
| commit | 236f03c0b9a4982328ed1201978f7f69d192d9b2 (patch) | |
| tree | e486f2fa39dba203563895541e92c60ed3e25759 /tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp | |
| parent | Added screens to welcome page (diff) | |
| download | blast-236f03c0b9a4982328ed1201978f7f69d192d9b2.tar.xz blast-236f03c0b9a4982328ed1201978f7f69d192d9b2.zip | |
Blast 1.1 release (windows / linux)
see docs/release_notes.txt for details
Diffstat (limited to 'tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp')
| -rw-r--r-- | tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp | 96 |
1 files changed, 82 insertions, 14 deletions
diff --git a/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp b/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp index 51569b7..5ce713d 100644 --- a/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp +++ b/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp @@ -1,12 +1,30 @@ -/* -* Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. -* -* NVIDIA CORPORATION and its licensors retain all intellectual property -* and proprietary rights in and to this software, related documentation -* and any modifications thereto. Any use, reproduction, disclosure or -* distribution of this software and related documentation without an express -* license agreement from NVIDIA CORPORATION is strictly prohibited. -*/ +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. + #include "Renderable.h" #include "Renderer.h" @@ -17,6 +35,8 @@ const DirectX::XMFLOAT4 DEFAULT_COLOR(0.5f, 0.5f, 0.5f, 1.0f); Renderable::Renderable(IRenderMesh& mesh, RenderMaterial& material) : m_mesh(mesh), m_scale(1, 1, 1), m_color(DEFAULT_COLOR), m_hidden(false), m_transform(PxIdentity) // Add By Lixu Begin , m_selected(false) +, m_depthTest(true) +, m_highlight(false) // Add By Lixu End { setMaterial(material); @@ -37,17 +57,65 @@ void Renderable::render(Renderer& renderer, bool depthStencilOnly) const } m_materialInstance->bind(*renderer.m_context, 0, depthStencilOnly); + + DirectX::XMFLOAT4 diffuseColor = getColor(); + DirectX::XMFLOAT4 specularColor = diffuseColor; + float useDiffuseTexture = -1.0; + float useSpecularTexture = -1.0; + float useNormalTexture = -1.0; + float specularShininess = 1.0; + RenderMaterial& renderMaterial = m_materialInstance->getMaterial(); + std::string mName = renderMaterial.getMaterialName(); + if (mName != "") + { + float r, g, b, a; + std::string texName; + + renderMaterial.getDiffuseColor(r, g, b, a); + diffuseColor = DirectX::XMFLOAT4(r, g, b, a); + renderMaterial.getSpecularColor(r, g, b, a); + specularColor = DirectX::XMFLOAT4(r, g, b, a); + + texName = renderMaterial.getTextureFileName(); + if (texName != "" && !renderMaterial.isBadTexture()) + { + useDiffuseTexture = 1.0; + } + + texName = renderMaterial.getTextureFileName(RenderMaterial::TT_Specular); + if (texName != "" && !renderMaterial.isBadTexture(RenderMaterial::TT_Specular)) + { + useSpecularTexture = 1.0; + } + + texName = renderMaterial.getTextureFileName(RenderMaterial::TT_Normal); + if (texName != "" && !renderMaterial.isBadTexture(RenderMaterial::TT_Normal)) + { + useNormalTexture = 1.0; + } + + specularShininess = renderMaterial.getSpecularShininess(); + } + + float selected = -1.0; + if (m_selected || m_highlight) + { + selected = 1.0; + } // setup object CB { D3D11_MAPPED_SUBRESOURCE mappedResource; renderer.m_context->Map(renderer.m_objectCB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource); Renderer::CBObject* objectBuffer = (Renderer::CBObject*)mappedResource.pData; - objectBuffer->world = PxMat44ToXMMATRIX(getModelMatrix()); - objectBuffer->color = getColor(); -// Add By Lixu Begin - objectBuffer->selected = m_selected ? 1.0 : -1.0; -// Add By Lixu End + objectBuffer->worldMatrix = PxMat44ToXMMATRIX(getModelMatrix()); + objectBuffer->diffuseColor = diffuseColor; + objectBuffer->specularColor = specularColor; + objectBuffer->useDiffuseTexture = useDiffuseTexture; + objectBuffer->useSpecularTexture = useSpecularTexture; + objectBuffer->useNormalTexture = useNormalTexture; + objectBuffer->specularShininess = specularShininess; + objectBuffer->selected = selected; renderer.m_context->Unmap(renderer.m_objectCB, 0); } |