private void OnCalculateCoord1(Vector3 localPosition, Vector3 localCenter, ref Vector2 coord) { coord.x = Mathf.Atan2(localPosition.x, localPosition.z); coord.y = Mathf.Asin(localPosition.y / localPosition.magnitude); coord.x = 0.5f - coord.x / (Mathf.PI * 2.0f); coord.y = 0.5f + coord.y / Mathf.PI; coord = SgtHelper.CartesianToPolarUV(localPosition); if (coord.x < 0.001f) { if (localCenter.x < 0.0f) { coord.x = 1.0f; } } else if (coord.x > 0.999f) { if (localCenter.x > 0.0f) { coord.x = 0.0f; } } }
private void OnCalculateHeight(Vector3 localPosition, ref float height) { if (Heightmap != null) { var uv = SgtHelper.CartesianToPolarUV(localPosition); var color = SampleBilinear(uv); height += (color.a - 0.5f) * Strength; } }
public override float GetHeight(Vector3 point) { if (HeightTex != null) { var uv = SgtHelper.CartesianToPolarUV(point); return(Mathf.Lerp(InnerRadius, OuterRadius, GetHeightTexAlpha(uv))); } return(1.0f); }
// This will return the local terrain height at the given local position public float GetSurfaceHeightLocal(Vector3 localPosition) { if (HeightTex != null) { var uv = SgtHelper.CartesianToPolarUV(localPosition); var height01 = GetHeightTexAlphaBilinear(uv); return(Mathf.Lerp(InnerRadius, OuterRadius, height01)); } return(1.0f); }
private void CalculateHeight(SgtVector3D localPosition, ref float height) { if (Heightmap != null) { var uv = SgtHelper.CartesianToPolarUV((Vector3)localPosition); var color = SampleBilinear(uv); switch (Encoding) { case EncodingType.Alpha: { height += Mathf.Lerp(DisplacementMin, DisplacementMax, color.a); } break; case EncodingType.RedGreen: { height += Mathf.Lerp(DisplacementMin, DisplacementMax, (color.r * 255.0f + color.g) / 256.0f); } break; } } }