From de79f683fea6079b05013c1eb4b2b98dd14859d9 Mon Sep 17 00:00:00 2001 From: turanszkij Date: Mon, 8 Apr 2019 23:47:51 +0100 Subject: [PATCH] material/pso update --- Editor/MaterialWindow.cpp | 10 +- Editor/ModelImporter_GLTF.cpp | 2 +- WickedEngine/MainComponent.cpp | 13 +- WickedEngine/wiEmittedParticle.cpp | 3 +- WickedEngine/wiRenderer.cpp | 353 +++++++++++---------- WickedEngine/wiSceneSystem.cpp | 2 +- WickedEngine/wiSceneSystem.h | 5 +- WickedEngine/wiSceneSystem_Serializers.cpp | 4 +- WickedEngine/wiVersion.cpp | 2 +- 9 files changed, 200 insertions(+), 194 deletions(-) diff --git a/Editor/MaterialWindow.cpp b/Editor/MaterialWindow.cpp index 99653a442..e754db12d 100644 --- a/Editor/MaterialWindow.cpp +++ b/Editor/MaterialWindow.cpp @@ -166,7 +166,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui) materialWindow->AddWidget(metalnessSlider); alphaSlider = new wiSlider(0, 1, 1.0f, 1000, "Alpha: "); - alphaSlider->SetTooltip("Adjusts the overall transparency of the surface. Don't forget to set a Blend mode or refraction index to take effect."); + alphaSlider->SetTooltip("Adjusts the overall transparency of the surface. No effect when BlendMode is set to OPAQUE."); alphaSlider->SetSize(XMFLOAT2(100, 30)); alphaSlider->SetPos(XMFLOAT2(x, y += step)); alphaSlider->OnSlide([&](wiEventArgs args) { @@ -177,7 +177,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui) materialWindow->AddWidget(alphaSlider); alphaRefSlider = new wiSlider(0, 1, 1.0f, 1000, "AlphaRef: "); - alphaRefSlider->SetTooltip("Adjust the alpha cutoff threshold. This disables some optimizations so performance can be affected."); + alphaRefSlider->SetTooltip("Adjust the alpha cutoff threshold. Some performance optimizations will be disabled."); alphaRefSlider->SetSize(XMFLOAT2(100, 30)); alphaRefSlider->SetPos(XMFLOAT2(x, y += step)); alphaRefSlider->OnSlide([&](wiEventArgs args) { @@ -188,7 +188,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui) materialWindow->AddWidget(alphaRefSlider); refractionIndexSlider = new wiSlider(0, 1.0f, 0.02f, 1000, "Refraction Index: "); - refractionIndexSlider->SetTooltip("Adjust the IOR (index of refraction). It controls the amount of distortion of the scene visible through the transparent object."); + refractionIndexSlider->SetTooltip("Adjust the IOR (index of refraction). It controls the amount of distortion of the scene visible through the transparent object. No effect when BlendMode is set to OPAQUE."); refractionIndexSlider->SetSize(XMFLOAT2(100, 30)); refractionIndexSlider->SetPos(XMFLOAT2(x, y += step)); refractionIndexSlider->OnSlide([&](wiEventArgs args) { @@ -349,7 +349,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui) MaterialComponent* material = wiSceneSystem::GetScene().materials.GetComponent(entity); if (material != nullptr && args.iValue >= 0) { - material->blendMode = static_cast(args.iValue); + material->userBlendMode = static_cast(args.iValue); } }); blendModeComboBox->AddItem("Opaque"); @@ -862,7 +862,7 @@ void MaterialWindow::SetEntity(Entity entity) materialWindow->SetEnabled(true); baseColorPicker->SetEnabled(true); emissiveColorPicker->SetEnabled(true); - blendModeComboBox->SetSelected((int)material->blendMode); + blendModeComboBox->SetSelected((int)material->userBlendMode); shaderTypeComboBox->SetSelected(max(0, material->GetCustomShaderID() + 1)); texture_baseColor_Button->SetText(wiHelper::GetFileNameFromPath(material->baseColorMapName)); diff --git a/Editor/ModelImporter_GLTF.cpp b/Editor/ModelImporter_GLTF.cpp index 87754b475..1ca322460 100644 --- a/Editor/ModelImporter_GLTF.cpp +++ b/Editor/ModelImporter_GLTF.cpp @@ -407,7 +407,7 @@ void ImportModel_GLTF(const std::string& fileName, Scene& scene) { if (alphaMode->second.string_value.compare("BLEND") == 0) { - material.blendMode = BLENDMODE_ALPHA; + material.userBlendMode = BLENDMODE_ALPHA; } } diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp index a801b84e6..6ab8559ed 100644 --- a/WickedEngine/MainComponent.cpp +++ b/WickedEngine/MainComponent.cpp @@ -164,6 +164,12 @@ void MainComponent::Run() wiProfiler::BeginRange("Update", wiProfiler::DOMAIN_CPU); Update(deltaTime); wiProfiler::EndRange(); // Update + + wiInputManager::Update(); + + wiProfiler::BeginRange("Render", wiProfiler::DOMAIN_CPU); + Render(); + wiProfiler::EndRange(); // Render } else { @@ -172,15 +178,8 @@ void MainComponent::Run() wiLua::GetGlobal()->SetDeltaTime(0); } - wiInputManager::Update(); - - wiProfiler::BeginRange("Render", wiProfiler::DOMAIN_CPU); - Render(); - wiProfiler::EndRange(); // Render - wiProfiler::EndRange(); // CPU Frame - wiProfiler::BeginRange("Compose", wiProfiler::DOMAIN_CPU); wiRenderer::GetDevice()->PresentBegin(); Compose(); diff --git a/WickedEngine/wiEmittedParticle.cpp b/WickedEngine/wiEmittedParticle.cpp index 6e6771bdf..69429dab4 100644 --- a/WickedEngine/wiEmittedParticle.cpp +++ b/WickedEngine/wiEmittedParticle.cpp @@ -600,7 +600,8 @@ void wiEmittedParticle::Draw(const CameraComponent& camera, const MaterialCompon } else { - device->BindGraphicsPSO(&PSO[material.blendMode][shaderType], threadID); + const BLENDMODE blendMode = material.GetBlendMode(); + device->BindGraphicsPSO(&PSO[blendMode][shaderType], threadID); device->BindResource(PS, material.GetBaseColorMap(), TEXSLOT_ONDEMAND0, threadID); } diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index aa78151f5..952a30702 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -549,12 +549,6 @@ enum OBJECTRENDERING_ALPHATEST OBJECTRENDERING_ALPHATEST_ENABLED, OBJECTRENDERING_ALPHATEST_COUNT }; -enum OBJECTRENDERING_TRANSPARENCY -{ - OBJECTRENDERING_TRANSPARENCY_DISABLED, - OBJECTRENDERING_TRANSPARENCY_ENABLED, - OBJECTRENDERING_TRANSPARENCY_COUNT -}; enum OBJECTRENDERING_NORMALMAP { OBJECTRENDERING_NORMALMAP_DISABLED, @@ -573,7 +567,7 @@ enum OBJECTRENDERING_POM OBJECTRENDERING_POM_ENABLED, OBJECTRENDERING_POM_COUNT }; -GraphicsPSO PSO_object[RENDERPASS_COUNT][BLENDMODE_COUNT][OBJECTRENDERING_DOUBLESIDED_COUNT][OBJECTRENDERING_TESSELLATION_COUNT][OBJECTRENDERING_ALPHATEST_COUNT][OBJECTRENDERING_TRANSPARENCY_COUNT][OBJECTRENDERING_NORMALMAP_COUNT][OBJECTRENDERING_PLANARREFLECTION_COUNT][OBJECTRENDERING_POM_COUNT]; +GraphicsPSO PSO_object[RENDERPASS_COUNT][BLENDMODE_COUNT][OBJECTRENDERING_DOUBLESIDED_COUNT][OBJECTRENDERING_TESSELLATION_COUNT][OBJECTRENDERING_ALPHATEST_COUNT][OBJECTRENDERING_NORMALMAP_COUNT][OBJECTRENDERING_PLANARREFLECTION_COUNT][OBJECTRENDERING_POM_COUNT]; GraphicsPSO PSO_object_water[RENDERPASS_COUNT]; GraphicsPSO PSO_object_wire; inline const GraphicsPSO* GetObjectPSO(RENDERPASS renderPass, bool doublesided, bool tessellation, const MaterialComponent& material, bool forceAlphaTestForDithering) @@ -597,13 +591,12 @@ inline const GraphicsPSO* GetObjectPSO(RENDERPASS renderPass, bool doublesided, } const bool alphatest = material.IsAlphaTestEnabled() || forceAlphaTestForDithering; - const bool transparent = material.IsTransparent(); const bool normalmap = material.GetNormalMap() != nullptr; const bool planarreflection = material.HasPlanarReflection(); const bool pom = material.parallaxOcclusionMapping > 0; - const BLENDMODE blendMode = material.blendMode; + const BLENDMODE blendMode = material.GetBlendMode(); - const GraphicsPSO& pso = PSO_object[renderPass][blendMode][doublesided][tessellation][alphatest][transparent][normalmap][planarreflection][pom]; + const GraphicsPSO& pso = PSO_object[renderPass][blendMode][doublesided][tessellation][alphatest][normalmap][planarreflection][pom]; assert(pso.IsValid()); return &pso; } @@ -2160,181 +2153,193 @@ void LoadShaders() { for (int alphatest = 0; alphatest < OBJECTRENDERING_ALPHATEST_COUNT; ++alphatest) { - for (int transparency = 0; transparency < OBJECTRENDERING_TRANSPARENCY_COUNT; ++transparency) + for (int normalmap = 0; normalmap < OBJECTRENDERING_NORMALMAP_COUNT; ++normalmap) { - for (int normalmap = 0; normalmap < OBJECTRENDERING_NORMALMAP_COUNT; ++normalmap) + for (int planarreflection = 0; planarreflection < OBJECTRENDERING_PLANARREFLECTION_COUNT; ++planarreflection) { - for (int planarreflection = 0; planarreflection < OBJECTRENDERING_PLANARREFLECTION_COUNT; ++planarreflection) + for (int pom = 0; pom < OBJECTRENDERING_POM_COUNT; ++pom) { - for (int pom = 0; pom < OBJECTRENDERING_POM_COUNT; ++pom) + const bool transparency = blendMode != BLENDMODE_OPAQUE; + VSTYPES realVS = GetVSTYPE((RENDERPASS)renderPass, tessellation, alphatest, transparency); + VLTYPES realVL = GetVLTYPE((RENDERPASS)renderPass, tessellation, alphatest, transparency); + HSTYPES realHS = GetHSTYPE((RENDERPASS)renderPass, tessellation); + DSTYPES realDS = GetDSTYPE((RENDERPASS)renderPass, tessellation); + GSTYPES realGS = GetGSTYPE((RENDERPASS)renderPass, alphatest); + PSTYPES realPS = GetPSTYPE((RENDERPASS)renderPass, alphatest, transparency, normalmap, planarreflection, pom); + + if (tessellation && (realHS == HSTYPE_NULL || realDS == DSTYPE_NULL)) { - VSTYPES realVS = GetVSTYPE((RENDERPASS)renderPass, tessellation, alphatest, transparency); - VLTYPES realVL = GetVLTYPE((RENDERPASS)renderPass, tessellation, alphatest, transparency); - HSTYPES realHS = GetHSTYPE((RENDERPASS)renderPass, tessellation); - DSTYPES realDS = GetDSTYPE((RENDERPASS)renderPass, tessellation); - GSTYPES realGS = GetGSTYPE((RENDERPASS)renderPass, alphatest); - PSTYPES realPS = GetPSTYPE((RENDERPASS)renderPass, alphatest, transparency, normalmap, planarreflection, pom); + continue; + } - if (tessellation && (realHS == HSTYPE_NULL || realDS == DSTYPE_NULL)) + GraphicsPSODesc desc; + desc.vs = vertexShaders[realVS]; + desc.il = &vertexLayouts[realVL]; + desc.hs = hullShaders[realHS]; + desc.ds = domainShaders[realDS]; + desc.gs = geometryShaders[realGS]; + desc.ps = pixelShaders[realPS]; + + switch (blendMode) + { + case BLENDMODE_OPAQUE: + desc.bs = &blendStates[BSTYPE_OPAQUE]; + break; + case BLENDMODE_ALPHA: + desc.bs = &blendStates[BSTYPE_TRANSPARENT]; + break; + case BLENDMODE_ADDITIVE: + desc.bs = &blendStates[BSTYPE_ADDITIVE]; + break; + case BLENDMODE_PREMULTIPLIED: + desc.bs = &blendStates[BSTYPE_PREMULTIPLIED]; + break; + default: + assert(0); + break; + } + + switch (renderPass) + { + case RENDERPASS_DEPTHONLY: + case RENDERPASS_SHADOW: + case RENDERPASS_SHADOWCUBE: + desc.bs = &blendStates[transparency ? BSTYPE_TRANSPARENTSHADOWMAP : BSTYPE_COLORWRITEDISABLE]; + break; + default: + break; + } + + switch (renderPass) + { + case RENDERPASS_SHADOW: + case RENDERPASS_SHADOWCUBE: + desc.dss = &depthStencils[transparency ? DSSTYPE_DEPTHREAD : DSSTYPE_SHADOW]; + break; + case RENDERPASS_TILEDFORWARD: + if (blendMode == BLENDMODE_ADDITIVE) { - continue; - } - - GraphicsPSODesc desc; - desc.vs = vertexShaders[realVS]; - desc.il = &vertexLayouts[realVL]; - desc.hs = hullShaders[realHS]; - desc.ds = domainShaders[realDS]; - desc.gs = geometryShaders[realGS]; - desc.ps = pixelShaders[realPS]; - - switch (blendMode) - { - case BLENDMODE_OPAQUE: - desc.bs = &blendStates[BSTYPE_OPAQUE]; - break; - case BLENDMODE_ALPHA: - desc.bs = &blendStates[BSTYPE_TRANSPARENT]; - break; - case BLENDMODE_ADDITIVE: - desc.bs = &blendStates[BSTYPE_ADDITIVE]; - break; - case BLENDMODE_PREMULTIPLIED: - desc.bs = &blendStates[BSTYPE_PREMULTIPLIED]; - break; - default: - assert(0); - break; - } - - switch (renderPass) - { - case RENDERPASS_DEPTHONLY: - case RENDERPASS_SHADOW: - case RENDERPASS_SHADOWCUBE: - desc.bs = &blendStates[transparency ? BSTYPE_TRANSPARENTSHADOWMAP : BSTYPE_COLORWRITEDISABLE]; - break; - default: - break; - } - - switch (renderPass) - { - case RENDERPASS_SHADOW: - case RENDERPASS_SHADOWCUBE: - desc.dss = &depthStencils[transparency ? DSSTYPE_DEPTHREAD : DSSTYPE_SHADOW]; - break; - case RENDERPASS_TILEDFORWARD: - desc.dss = &depthStencils[transparency ? DSSTYPE_DEFAULT : DSSTYPE_DEPTHREADEQUAL]; - break; - case RENDERPASS_ENVMAPCAPTURE: - desc.dss = &depthStencils[DSSTYPE_ENVMAP]; - break; - case RENDERPASS_VOXELIZE: - desc.dss = &depthStencils[DSSTYPE_XRAY]; - break; - default: - desc.dss = &depthStencils[DSSTYPE_DEFAULT]; - break; - } - - switch (renderPass) - { - case RENDERPASS_SHADOW: - case RENDERPASS_SHADOWCUBE: - desc.rs = &rasterizers[doublesided ? RSTYPE_SHADOW_DOUBLESIDED : RSTYPE_SHADOW]; - break; - case RENDERPASS_VOXELIZE: - desc.rs = &rasterizers[RSTYPE_VOXELIZE]; - break; - default: - desc.rs = &rasterizers[doublesided ? RSTYPE_DOUBLESIDED : RSTYPE_FRONT]; - break; - } - - switch (renderPass) - { - case RENDERPASS_TEXTURE: - desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_hdr; - desc.DSFormat = DSFormat_full; - break; - case RENDERPASS_DEFERRED: - desc.numRTs = 5; - desc.RTFormats[0] = RTFormat_gbuffer_0; - desc.RTFormats[1] = RTFormat_gbuffer_1; - desc.RTFormats[2] = RTFormat_gbuffer_2; - desc.RTFormats[3] = RTFormat_deferred_lightbuffer; - desc.RTFormats[4] = RTFormat_deferred_lightbuffer; - desc.DSFormat = DSFormat_full; - break; - case RENDERPASS_FORWARD: - if (transparency) - { - desc.numRTs = 1; - } - else - { - desc.numRTs = 2; - } - desc.RTFormats[0] = RTFormat_hdr; - desc.RTFormats[1] = RTFormat_gbuffer_1; - desc.DSFormat = DSFormat_full; - break; - case RENDERPASS_TILEDFORWARD: - if (transparency) - { - desc.numRTs = 1; - } - else - { - desc.numRTs = 2; - } - desc.RTFormats[0] = RTFormat_hdr; - desc.RTFormats[1] = RTFormat_gbuffer_1; - desc.DSFormat = DSFormat_full; - break; - case RENDERPASS_DEPTHONLY: - desc.numRTs = 0; - desc.DSFormat = DSFormat_full; - break; - case RENDERPASS_ENVMAPCAPTURE: - desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_envprobe; - desc.DSFormat = DSFormat_small; - break; - case RENDERPASS_SHADOW: - if (transparency) - { - desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_ldr; - } - else - { - desc.numRTs = 0; - } - desc.DSFormat = DSFormat_small; - break; - case RENDERPASS_SHADOWCUBE: - desc.numRTs = 0; - desc.DSFormat = DSFormat_small; - break; - case RENDERPASS_VOXELIZE: - desc.numRTs = 0; - break; - } - - if (tessellation) - { - desc.pt = PATCHLIST; + desc.dss = &depthStencils[DSSTYPE_DEPTHREAD]; } else { - desc.pt = TRIANGLELIST; + desc.dss = &depthStencils[transparency ? DSSTYPE_DEFAULT : DSSTYPE_DEPTHREADEQUAL]; } - - device->CreateGraphicsPSO(&desc, &PSO_object[renderPass][blendMode][doublesided][tessellation][alphatest][transparency][normalmap][planarreflection][pom]); + break; + case RENDERPASS_ENVMAPCAPTURE: + desc.dss = &depthStencils[DSSTYPE_ENVMAP]; + break; + case RENDERPASS_VOXELIZE: + desc.dss = &depthStencils[DSSTYPE_XRAY]; + break; + default: + if (blendMode == BLENDMODE_ADDITIVE) + { + desc.dss = &depthStencils[DSSTYPE_DEPTHREAD]; + } + else + { + desc.dss = &depthStencils[DSSTYPE_DEFAULT]; + } + break; } + + switch (renderPass) + { + case RENDERPASS_SHADOW: + case RENDERPASS_SHADOWCUBE: + desc.rs = &rasterizers[doublesided ? RSTYPE_SHADOW_DOUBLESIDED : RSTYPE_SHADOW]; + break; + case RENDERPASS_VOXELIZE: + desc.rs = &rasterizers[RSTYPE_VOXELIZE]; + break; + default: + desc.rs = &rasterizers[doublesided ? RSTYPE_DOUBLESIDED : RSTYPE_FRONT]; + break; + } + + switch (renderPass) + { + case RENDERPASS_TEXTURE: + desc.numRTs = 1; + desc.RTFormats[0] = RTFormat_hdr; + desc.DSFormat = DSFormat_full; + break; + case RENDERPASS_DEFERRED: + desc.numRTs = 5; + desc.RTFormats[0] = RTFormat_gbuffer_0; + desc.RTFormats[1] = RTFormat_gbuffer_1; + desc.RTFormats[2] = RTFormat_gbuffer_2; + desc.RTFormats[3] = RTFormat_deferred_lightbuffer; + desc.RTFormats[4] = RTFormat_deferred_lightbuffer; + desc.DSFormat = DSFormat_full; + break; + case RENDERPASS_FORWARD: + if (transparency) + { + desc.numRTs = 1; + } + else + { + desc.numRTs = 2; + } + desc.RTFormats[0] = RTFormat_hdr; + desc.RTFormats[1] = RTFormat_gbuffer_1; + desc.DSFormat = DSFormat_full; + break; + case RENDERPASS_TILEDFORWARD: + if (transparency) + { + desc.numRTs = 1; + } + else + { + desc.numRTs = 2; + } + desc.RTFormats[0] = RTFormat_hdr; + desc.RTFormats[1] = RTFormat_gbuffer_1; + desc.DSFormat = DSFormat_full; + break; + case RENDERPASS_DEPTHONLY: + desc.numRTs = 0; + desc.DSFormat = DSFormat_full; + break; + case RENDERPASS_ENVMAPCAPTURE: + desc.numRTs = 1; + desc.RTFormats[0] = RTFormat_envprobe; + desc.DSFormat = DSFormat_small; + break; + case RENDERPASS_SHADOW: + if (transparency) + { + desc.numRTs = 1; + desc.RTFormats[0] = RTFormat_ldr; + } + else + { + desc.numRTs = 0; + } + desc.DSFormat = DSFormat_small; + break; + case RENDERPASS_SHADOWCUBE: + desc.numRTs = 0; + desc.DSFormat = DSFormat_small; + break; + case RENDERPASS_VOXELIZE: + desc.numRTs = 0; + break; + } + + if (tessellation) + { + desc.pt = PATCHLIST; + } + else + { + desc.pt = TRIANGLELIST; + } + + device->CreateGraphicsPSO(&desc, &PSO_object[renderPass][blendMode][doublesided][tessellation][alphatest][normalmap][planarreflection][pom]); } } } diff --git a/WickedEngine/wiSceneSystem.cpp b/WickedEngine/wiSceneSystem.cpp index e3cf93118..f68178a04 100644 --- a/WickedEngine/wiSceneSystem.cpp +++ b/WickedEngine/wiSceneSystem.cpp @@ -1362,7 +1362,7 @@ namespace wiSceneSystem transform.Translate(position); transform.UpdateTransform(); - materials.Create(entity).blendMode = BLENDMODE_ALPHA; + materials.Create(entity).userBlendMode = BLENDMODE_ALPHA; return entity; } diff --git a/WickedEngine/wiSceneSystem.h b/WickedEngine/wiSceneSystem.h index f0ea3d051..120de63a6 100644 --- a/WickedEngine/wiSceneSystem.h +++ b/WickedEngine/wiSceneSystem.h @@ -113,7 +113,7 @@ namespace wiSceneSystem STENCILREF engineStencilRef = STENCILREF_DEFAULT; uint8_t userStencilRef = 0; - BLENDMODE blendMode = BLENDMODE_OPAQUE; + BLENDMODE userBlendMode = BLENDMODE_OPAQUE; XMFLOAT4 baseColor = XMFLOAT4(1, 1, 1, 1); XMFLOAT4 emissiveColor = XMFLOAT4(1, 1, 1, 0); @@ -188,7 +188,8 @@ namespace wiSceneSystem inline void SetOcclusionEnabled_Primary(bool value) { SetDirty(); if (value) { _flags |= OCCLUSION_PRIMARY; } else { _flags &= ~OCCLUSION_PRIMARY; } } inline void SetOcclusionEnabled_Secondary(bool value) { SetDirty(); if (value) { _flags |= OCCLUSION_SECONDARY; } else { _flags &= ~OCCLUSION_SECONDARY; } } - inline bool IsTransparent() const { return GetOpacity() < 1.0f || blendMode != BLENDMODE_OPAQUE || IsCustomShader(); } + inline bool IsTransparent() const { return userBlendMode != BLENDMODE_OPAQUE || IsCustomShader(); } + inline BLENDMODE GetBlendMode() const { if (userBlendMode == BLENDMODE_OPAQUE && IsTransparent()) { return BLENDMODE_ALPHA; } else return userBlendMode; } inline bool IsWater() const { return _flags & WATER; } inline bool HasPlanarReflection() const { return (_flags & PLANAR_REFLECTION) || IsWater(); } inline bool IsCastingShadow() const { return _flags & CAST_SHADOW; } diff --git a/WickedEngine/wiSceneSystem_Serializers.cpp b/WickedEngine/wiSceneSystem_Serializers.cpp index 0ae1482eb..ffb36302a 100644 --- a/WickedEngine/wiSceneSystem_Serializers.cpp +++ b/WickedEngine/wiSceneSystem_Serializers.cpp @@ -80,7 +80,7 @@ namespace wiSceneSystem archive >> _flags; archive >> (uint8_t&)engineStencilRef; archive >> userStencilRef; - archive >> (uint8_t&)blendMode; + archive >> (uint8_t&)userBlendMode; archive >> baseColor; if (archive.GetVersion() >= 25) { @@ -160,7 +160,7 @@ namespace wiSceneSystem archive << _flags; archive << (uint8_t)engineStencilRef; archive << userStencilRef; - archive << (uint8_t)blendMode; + archive << (uint8_t)userBlendMode; archive << baseColor; if (archive.GetVersion() >= 25) { diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 160b4fc36..76585052d 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates const int minor = 26; // minor bug fixes, alterations, refactors, updates - const int revision = 2; + const int revision = 3; long GetVersion()