diff --git a/samples/golf/buildnumber.h b/samples/golf/buildnumber.h index bdfe6d789..9aaa64bfe 100644 --- a/samples/golf/buildnumber.h +++ b/samples/golf/buildnumber.h @@ -3,7 +3,7 @@ #ifndef BUILD_NUMBER_H_ #define BUILD_NUMBER_H_ -#define BUILDNUMBER 1763 -#define BUILDNUMBER_STR "1763" +#define BUILDNUMBER 1769 +#define BUILDNUMBER_STR "1769" #endif /* BUILD_NUMBER_H_ */ diff --git a/samples/golf/src/golf/GolfState.cpp b/samples/golf/src/golf/GolfState.cpp index 3c404f1f4..7048fbdd9 100644 --- a/samples/golf/src/golf/GolfState.cpp +++ b/samples/golf/src/golf/GolfState.cpp @@ -2287,6 +2287,9 @@ void GolfState::loadAssets() //minimap - green overhead m_resources.shaders.loadFromString(ShaderID::Minimap, MinimapVertex, MinimapFragment); + shader = &m_resources.shaders.get(ShaderID::Minimap); + m_scaleBuffer.addShader(*shader); + m_windBuffer.addShader(*shader); //minimap - course view m_resources.shaders.loadFromString(ShaderID::MinimapView, MinimapViewVertex, MinimapViewFragment); @@ -5120,29 +5123,40 @@ void GolfState::spawnBall(const ActorInfo& info) return; } - if (m_currentPlayer.terrain == TerrainID::Green) + if (m_miniGreenEnt.getComponent().getTexture() && + m_miniGreenEnt.getComponent().getTexture()->getGLHandle() == + m_flightTexture.getTexture().getGLHandle()) + { + //hide + e.getComponent().setFacing(cro::Drawable2D::Facing::Back); + } + else { - auto pos = ballEnt.getComponent().getWorldPosition(); - auto iconPos = m_greenCam.getComponent().coordsToPixel(pos, m_greenBuffer.getSize()); + e.getComponent().setFacing(cro::Drawable2D::Facing::Front); + if (m_currentPlayer.terrain == TerrainID::Green) + { + auto pos = ballEnt.getComponent().getWorldPosition(); + auto iconPos = m_greenCam.getComponent().coordsToPixel(pos, m_greenBuffer.getSize()); - const glm::vec2 Centre = glm::vec2(m_greenBuffer.getSize() / 2u); + const glm::vec2 Centre = glm::vec2(m_greenBuffer.getSize() / 2u); - iconPos -= Centre; - iconPos *= std::min(1.f, Centre.x / glm::length(iconPos)); - iconPos += Centre; + iconPos -= Centre; + iconPos *= std::min(1.f, Centre.x / glm::length(iconPos)); + iconPos += Centre; - auto terrain = ballEnt.getComponent().terrain; - float scale = terrain == TerrainID::Green ? m_viewScale.x / m_miniGreenEnt.getComponent().getScale().x : 0.f; + auto terrain = ballEnt.getComponent().terrain; + float scale = terrain == TerrainID::Green ? m_viewScale.x / m_miniGreenEnt.getComponent().getScale().x : 0.f; - e.getComponent().setScale(glm::vec2(scale)); + e.getComponent().setScale(glm::vec2(scale)); - e.getComponent().setPosition(glm::vec3(iconPos, static_cast(depthOffset) / 100.f)); - - const auto activePlayer = ((m_currentPlayer.client * ConstVal::MaxPlayers) + m_currentPlayer.player) + 1; - if (m_inputParser.getActive() - && activePlayer == depthOffset) - { - m_miniGreenIndicatorEnt.getComponent().setPosition(glm::vec3(iconPos, 0.05f)); + e.getComponent().setPosition(glm::vec3(iconPos, static_cast(depthOffset) / 100.f)); + + const auto activePlayer = ((m_currentPlayer.client * ConstVal::MaxPlayers) + m_currentPlayer.player) + 1; + if (m_inputParser.getActive() + && activePlayer == depthOffset) + { + m_miniGreenIndicatorEnt.getComponent().setPosition(glm::vec3(iconPos, 0.05f)); + } } } }; diff --git a/samples/golf/src/golf/MinimapShader.inl b/samples/golf/src/golf/MinimapShader.inl index 3756b480a..ce356ba7a 100644 --- a/samples/golf/src/golf/MinimapShader.inl +++ b/samples/golf/src/golf/MinimapShader.inl @@ -51,8 +51,12 @@ static const std::string MinimapVertex = R"( //minimap as in top down view of green static const std::string MinimapFragment = R"( + uniform sampler2D u_texture; +#include WIND_BUFFER +#include SCALE_BUFFER + VARYING_IN LOW vec4 v_colour; VARYING_IN MED vec2 v_texCoord; OUTPUT @@ -66,6 +70,11 @@ static const std::string MinimapFragment = R"( const float res = 100.0; const float scale = 2.0; + float rand(vec2 position) + { + return fract(sin(dot(position, vec2(12.9898, 4.1414)) + u_windData.w) * 43758.5453); + } + void main() { vec2 pos = (round(floor(v_texCoord * res) * scale) / scale) / res; @@ -73,8 +82,10 @@ static const std::string MinimapFragment = R"( vec2 dir = pos - vec2(0.5); float length2 = dot(dir,dir); - FRAG_OUT = TEXTURE(u_texture, v_texCoord) * v_colour; + vec3 noise = vec3(rand(floor((v_texCoord * textureSize(u_texture, 0)) / u_pixelScale))); + FRAG_OUT = TEXTURE(u_texture, v_texCoord);// * v_colour; + FRAG_OUT.rgb = mix(noise, FRAG_OUT.rgb, v_colour.r); FRAG_OUT = mix(FRAG_OUT, borderColour, step(borderPos, length2)); FRAG_OUT.a *= 1.0 - step(stepPos, length2); })";