From 449ca6df6d096e44b74224d1be2e422b334cc2a2 Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 11 May 2015 17:27:22 -0700 Subject: [PATCH] fix the color blending on Mac --- libraries/model/src/model/Skybox.cpp | 9 ++++--- libraries/model/src/model/Skybox.slv | 37 ++++++++++++++-------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/libraries/model/src/model/Skybox.cpp b/libraries/model/src/model/Skybox.cpp index 08dcc491cf..1a54ebd955 100755 --- a/libraries/model/src/model/Skybox.cpp +++ b/libraries/model/src/model/Skybox.cpp @@ -53,7 +53,7 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky static gpu::BufferPointer theBuffer; static gpu::Stream::FormatPointer theFormat; static gpu::BufferPointer theConstants; - const int SKYBOX_CONSTANTS_SLOT = 3; + int SKYBOX_CONSTANTS_SLOT = 0; // need to be defined by the compilation of the shader if (!thePipeline) { auto skyVS = gpu::ShaderPointer(gpu::Shader::createVertex(std::string(Skybox_vert))); auto skyFS = gpu::ShaderPointer(gpu::Shader::createPixel(std::string(Skybox_frag))); @@ -61,12 +61,15 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky gpu::Shader::BindingSet bindings; bindings.insert(gpu::Shader::Binding(std::string("cubeMap"), 0)); - bindings.insert(gpu::Shader::Binding(std::string("skyboxBuffer"), SKYBOX_CONSTANTS_SLOT)); - if (!gpu::Shader::makeProgram(*skyShader, bindings)) { } + SKYBOX_CONSTANTS_SLOT = skyShader->getBuffers().findLocation("skyboxBuffer"); + if (SKYBOX_CONSTANTS_SLOT == gpu::Shader::INVALID_LOCATION) { + SKYBOX_CONSTANTS_SLOT = skyShader->getUniforms().findLocation("skyboxBuffer"); + } + auto skyState = gpu::StatePointer(new gpu::State()); thePipeline = gpu::PipelinePointer(gpu::Pipeline::create(skyShader, skyState)); diff --git a/libraries/model/src/model/Skybox.slv b/libraries/model/src/model/Skybox.slv index c21863f9c7..0ca64ffbf7 100755 --- a/libraries/model/src/model/Skybox.slv +++ b/libraries/model/src/model/Skybox.slv @@ -15,25 +15,24 @@ <$declareStandardTransform()$> -struct Skybox { - vec4 _color; -}; - -<@if GPU_FEATURE_PROFILE == GPU_CORE @> -uniform skyboxBuffer { - Skybox _skybox; -}; -Skybox getSkybox() { - return _skybox; -} -<@else@> -uniform vec4 skyboxBuffer[1]; -Skybox getSkybox() { - Skybox _skybox; - _skybox._color = skyboxBuffer[0]; - - return _skybox; -} +struct Skybox { + vec4 _color; +}; + +<@if GPU_FEATURE_PROFILE == GPU_CORE @> +uniform skyboxBuffer { + Skybox _skybox; +}; +Skybox getSkybox() { + return _skybox; +} +<@else@> +uniform vec4 skyboxBuffer[1]; +Skybox getSkybox() { + Skybox _skybox; + _skybox._color = skyboxBuffer[0]; + return _skybox; +} <@endif@> varying vec3 normal;