Шейдер океана
В следующей версии Dagon будет новый extra-шейдер OceanShader
, реализующий волны Герстнера. Волны смещаются так, что объект воды можно двигать в плоскости XZ вместе с камерой — получается эффект бесконечного океана.


Пример:
auto oceanMesh = New!ShapePlane(150, 150, 100, assetManager);
auto waterMaterial = addMaterial();
waterMaterial.roughnessFactor = 0.0f;
waterMaterial.blendMode = Transparent;
waterMaterial.useCulling = false;
waterMaterial.textureScale = Vector2f(0.2f, 0.2f);
waterMaterial.shader = New!OceanShader(assetManager);
auto eWaterPlane = addEntity();
eWaterPlane.drawable = oceanMesh;
eWaterPlane.material = waterMaterial;
auto psyncWater = New!PositionSync(eventManager, eWaterPlane, camera);
psyncWater.mask = Vector3f(1.0f, 0.0f, 1.0f);