diff --git a/Code/Game/GameClient/GameClientState/C_Object.cpp b/Code/Game/GameClient/GameClientState/C_Object.cpp index 50664a92..638e16de 100644 --- a/Code/Game/GameClient/GameClientState/C_Object.cpp +++ b/Code/Game/GameClient/GameClientState/C_Object.cpp @@ -100,6 +100,26 @@ void C_Object::Release() } } +Oyster::Math::Float3 C_Object::GetTint() +{ + return model->Tint; +} + +Oyster::Math::Float3 C_Object::GetGlowTint() +{ + return model->GlowTint; +} + +void C_Object::SetTint(Oyster::Math::Float3 tint) +{ + model->Tint = tint; +} + +void C_Object::SetGlowTint(Oyster::Math::Float3 tint) +{ + model->GlowTint = tint; +} + //////////////////////////////////////////////// diff --git a/Code/Game/GameClient/GameClientState/C_Object.h b/Code/Game/GameClient/GameClientState/C_Object.h index dcc2731c..dacca3c8 100644 --- a/Code/Game/GameClient/GameClientState/C_Object.h +++ b/Code/Game/GameClient/GameClientState/C_Object.h @@ -66,6 +66,13 @@ namespace DanBias void addScale(Oyster::Math::Float3 deltaScale); Oyster::Math::Float3 getScale() const; + Oyster::Math::Float3 GetTint(); + Oyster::Math::Float3 GetGlowTint(); + + void SetTint(Oyster::Math::Float3); + void SetGlowTint(Oyster::Math::Float3); + + // RB DEBUG bool InitRB(RBInitData modelInit); Oyster::Math::Float4x4 getRBWorld() const; diff --git a/Code/Game/GameClient/GameClientState/GameState.cpp b/Code/Game/GameClient/GameClientState/GameState.cpp index 462422a6..1e8d23c3 100644 --- a/Code/Game/GameClient/GameClientState/GameState.cpp +++ b/Code/Game/GameClient/GameClientState/GameState.cpp @@ -182,7 +182,9 @@ bool GameState::Render() for( ; dynamicObject != this->privData->dynamicObjects->end(); ++dynamicObject ) { if( dynamicObject->second ) + { dynamicObject->second->Render(); + } } diff --git a/Code/OysterGraphics/Definitions/GraphicalDefinition.h b/Code/OysterGraphics/Definitions/GraphicalDefinition.h index fcfd865c..c9b42c00 100644 --- a/Code/OysterGraphics/Definitions/GraphicalDefinition.h +++ b/Code/OysterGraphics/Definitions/GraphicalDefinition.h @@ -79,6 +79,14 @@ namespace Oyster unsigned int StopY; Math::Float4 BlurMask; }; + + struct TintData + { + Math::Float3 Tint; + Math::Float PAD; + Math::Float3 GlowTint; + Math::Float PAD2; + }; } } } \ No newline at end of file diff --git a/Code/OysterGraphics/DllInterfaces/GFXAPI.cpp b/Code/OysterGraphics/DllInterfaces/GFXAPI.cpp index 23827e1d..41063265 100644 --- a/Code/OysterGraphics/DllInterfaces/GFXAPI.cpp +++ b/Code/OysterGraphics/DllInterfaces/GFXAPI.cpp @@ -139,6 +139,7 @@ namespace Oyster m->Visible = true; m->Animation.AnimationPlaying = NULL; m->Tint = Math::Float3(1); + m->GlowTint = Math::Float3(1); m->info = (Model::ModelInfo*)Core::loader.LoadResource((Core::modelPath + filename).c_str(),Oyster::Graphics::Loading::LoadDAN, Oyster::Graphics::Loading::UnloadDAN); Model::ModelInfo* mi = (Model::ModelInfo*)m->info; diff --git a/Code/OysterGraphics/Model/Model.h b/Code/OysterGraphics/Model/Model.h index b264cf50..5985dbcd 100644 --- a/Code/OysterGraphics/Model/Model.h +++ b/Code/OysterGraphics/Model/Model.h @@ -24,6 +24,7 @@ namespace Oyster ModelInfo* info; Oyster::Math::Float4x4 WorldMatrix; Oyster::Math::Float3 Tint; + Oyster::Math::Float3 GlowTint; bool Visible; AnimationData Animation; }; diff --git a/Code/OysterGraphics/Render/DefaultRenderer.cpp b/Code/OysterGraphics/Render/DefaultRenderer.cpp index 689c3abe..7d0d987b 100644 --- a/Code/OysterGraphics/Render/DefaultRenderer.cpp +++ b/Code/OysterGraphics/Render/DefaultRenderer.cpp @@ -136,8 +136,15 @@ namespace Oyster memcpy(data,&(pm),sizeof(pm)); Resources::Gather::ModelData.Unmap(); + Definitions::TintData td; + td.GlowTint = models[i].GlowTint; + td.Tint = models[i].Tint; + td.PAD = 0; + td.PAD2 = 0; + int s = sizeof(Definitions::TintData); + data = Render::Resources::Color.Map(); - memcpy(data,&models[i].Tint,sizeof(Math::Float3)); + memcpy(data,&td,sizeof(Definitions::TintData)); Render::Resources::Color.Unmap(); if(info->Material.size()) diff --git a/Code/OysterGraphics/Render/Resources.cpp b/Code/OysterGraphics/Render/Resources.cpp index 1de7d4ce..2e693472 100644 --- a/Code/OysterGraphics/Render/Resources.cpp +++ b/Code/OysterGraphics/Render/Resources.cpp @@ -123,7 +123,7 @@ namespace Oyster Gather::AnimationData.Init(desc); desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_PS; - desc.ElementSize = sizeof(Math::Float3); + desc.ElementSize = sizeof(Definitions::TintData); Color.Init(desc); desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_GS; @@ -176,7 +176,7 @@ namespace Oyster sdesc.Filter = D3D11_FILTER_ANISOTROPIC; sdesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; sdesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; - sdesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP; + sdesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; sdesc.MipLODBias = 0; sdesc.MaxAnisotropy =4; sdesc.ComparisonFunc = D3D11_COMPARISON_LESS_EQUAL; diff --git a/Code/OysterGraphics/Shader/Passes/Gather/GatherPixel.hlsl b/Code/OysterGraphics/Shader/Passes/Gather/GatherPixel.hlsl index d9545573..af095acf 100644 --- a/Code/OysterGraphics/Shader/Passes/Gather/GatherPixel.hlsl +++ b/Code/OysterGraphics/Shader/Passes/Gather/GatherPixel.hlsl @@ -40,7 +40,10 @@ float3 perturb_normal( float3 N, float3 V, float2 texcoord ) PixelOut main(VertexOut input) { PixelOut output; - output.DiffuseGlow = Diffuse.Sample(S1, input.UV) * float4(Color, 1); + float4 DiffGlow = Diffuse.Sample(S1, input.UV); + float3 tint = Color*(1-DiffGlow) + GlowColor * DiffGlow; + tint = tint / 2; + output.DiffuseGlow = DiffGlow * float4(tint,1); //NORMALIZE float3x3 CoTangentFrame = cotangent_frame(input.normal, normalize(input.ViewPos), input.UV); diff --git a/Code/OysterGraphics/Shader/Passes/Gather/Header.hlsli b/Code/OysterGraphics/Shader/Passes/Gather/Header.hlsli index 7584fcd3..75a297bb 100644 --- a/Code/OysterGraphics/Shader/Passes/Gather/Header.hlsli +++ b/Code/OysterGraphics/Shader/Passes/Gather/Header.hlsli @@ -42,4 +42,7 @@ cbuffer PerModel : register(b1) cbuffer Tint : register(b0) { float3 Color; + float PAD; + float3 GlowColor; + float PAD2; } \ No newline at end of file