ここでの他の答えは、テクスチャの使用を提案しています。テクスチャを使わないテクニックを紹介します。
六角形の境界を面白くしたいとします。描画しているものの中央に移動すると、興味深い境界線を作成するのが簡単になります。タイルを直接描画する代わりに、タイルの「デュアル」を描画します。この手法は「コーナータイル」と呼ばれます(こことこことここ)。六角形の双対は三角形なので、六角形の代わりにこれらの三角形を描画します。
六角形の間の境界はレンダリングされた三角形の真ん中にあるので、それらを使ってもっと面白いことができるようになります。ボーナス:六角形ごとに三角形を2つ描画するだけで済みます(現在の場合は24)。
これらの三角形のそれぞれの内部で、フラグメントシェーダーに六角形を描画させます。重心座標でそれを行うことができます。三角形の各頂点に(1,0,0)、(0,1,0)、(0,0,1)を置きます。三角形の内部では、それらの座標が補間されます。フラグメントシェーダーは(a、b、c)を受け取り、最大の値を確認できます。これにより、この時点で3つの六角形のどれを描画するかがわかります。
float max_n = max(barycentric.r, max(barycentric.g, barycentric.b));
if (max_n == barycentric.r) { color = v_color0; }
else if (max_n == barycentric.g) { color = v_color1; }
else if (max_n == barycentric.b) { color = v_color2; }
それは直線のためです。
ノイズの多いエッジが必要な場合は、重心座標にノイズを追加できます。
ノイズの振幅波長/周波数で遊んで、いくつかのクールな効果を得ることができます:
ノイズに注意し、三角形の境界を越えて一貫していることを確認する必要があります。これを行う1つの方法は、16進数のIDを渡して、それを重心座標に追加された3つのノイズ値のそれぞれのシード値として使用することです。
ここでインタラクティブなデモを行いました。(デモでは、実際のプロジェクトでこれを機能させる場合に必要な16進数IDやその他のいくつかを実装しませんでした。これは簡単で素早いデモです)