Gyroid[{x_, y_, z_}]:=Sin[x]Cos[y] + Sin[y]Cos[z] + Sin[z]Cos[x]

SchwarzP[{x_, y_, z_}]:=Cos[x] + Cos[y] + Cos[z];

SchwarzD[{x_, y_, z_}]:=Module[{s = Sin /@ {x,y,z}, c = Cos /@ {x, y, z}},
s[[1]]*s[[2]]*s[[3]]+s[[1]]*c[[2]]*c[[3]]+c[[1]]*s[[2]]*c[[3]]+c[[1]]*c[[2]]*s[[3]]
]

Neovius[{x_, y_, z_}]:=Module[{ c = Cos /@ {x, y, z}},
3(c[[1]]+c[[2]]+c[[3]])+4*c[[1]]*c[[2]]*c[[3]]
]

SchoenIWP[{x_, y_, z_}]:=Module[{c = Cos /@ {x, y, z},c2 = Cos /@ {2x,2 y, 2z}},
2(c[[1]]*c[[2]]+c[[2]]*c[[3]]+c[[3]]*c[[1]])-(c2[[1]]+c2[[2]]+c2[[3]])
]

FischerKochS[{x_, y_, z_}]:=Module[{s = Sin /@ {x,y,z}, c = Cos /@ {x, y, z},c2 = Cos /@ {2x,2 y, 2z}},
 c2[[1]]*s[[2]]*c[[3]]+c[[1]]*c2[[2]]*s[[3]]+s[[1]]*c[[2]]*c2[[3]]
]

FischerKochY[{x_, y_, z_}]:=Module[{c = Cos /@ {x, y, z},s = Sin /@ {x,y,z}, s2 = Sin /@ {2x,2 y, 2z}},
2*c[[1]]*c[[2]]*c[[3]]+(s2[[1]]*s[[2]]+s2[[2]]*s[[3]]+s2[[3]]*s[[1]])
]

FischerKochCP[{x_, y_, z_}]:=Module[{c = Cos /@ {x, y, z}},
c[[1]]+c[[2]]+c[[3]]+4*c[[1]]*c[[2]]*c[[3]]
]

functions = {Gyroid, SchwarzP, SchwarzD, Neovius, SchoenIWP, FischerKochS, FischerKochY, FischerKochCP};
 names={"Gyroid", "SchwarzP", "SchwarzD", "Neovius", "SchoenIWP", "FischerKochS", "FischerKochY", "FischerKochCP"};

f = SchoenIWP;
df[{x_, y_, z_}]:=Evaluate[Grad[f[{x, y, z}], {x,y,z}]];

reg = DiscretizeRegion[
ImplicitRegion[{f[{x,y,z}] == 0, -π<=x<=π,-π <= y <= π,-π <= z <= π},  {x, y, z}],
MaxCellMeasure->0.003
];
verts = MeshCoordinates[reg];
tris = MeshCells[reg, 2][[All,1]];
wd = WeightedData[Norm[df[Mean[verts[[#]]]]] & /@ tris, Area[Triangle[verts[[#]]]] & /@ tris];
GraphicsRow[{reg, Histogram[wd, {3, 5, (1/16)},PlotRange->15, ImageSize-> 500, PlotLabel->"||∇f|| @ f(x)=0\nMean: "<> ToString[Mean[wd]]]}, ImageSize->800]

surfaces = DiscretizeRegion[
ImplicitRegion[{#[{x,y,z}] == 0, -π<=x<=π,-π <= y <= π,-π <= z <= π},  {x, y, z}],
MaxCellMeasure->0.001
] & /@ {Gyroid, SchwarzP, SchwarzD, Neovius, SchoenIWP, FischerKochS, FischerKochY, FischerKochCP}

(*
view[t_] := RotationMatrix[2π t, {0, 0, 1}].{2,2,2};
drawSurface[surf_, t_] := Rasterize[Graphics3D[{Opacity[0.000001], Sphere[{0,0, 0}, Sqrt[3]], Opacity[1], EdgeForm[None], RGBColor[{0.7, 0.7, 1.0}], surf}, Boxed->False, ViewPoint->view[t], ImageSize->400, ViewAngle->35 Degree]]
Do[
frames = Table[drawSurface[surfaces[[i]], t], {t, 0, (119/120), (1/120)}];
Export[names[[i]]<>".mp4", frames, "DisplayDurations"->(1/30)]
,
{i, 1, Length[names]}
]
*)

normalization[i_] := Module[{
verts = MeshCoordinates[surfaces[[i]]],
tris = MeshCells[surfaces[[i]], 2][[All,1]],
df
},
df[{x_, y_, z_}]:=Evaluate[Grad[functions[[i]][{x, y, z}], {x,y,z}]];
Mean[WeightedData[Norm[df[Mean[verts[[#]]]]] & /@ tris, Area[Triangle[verts[[#]]]] & /@ tris]]
]
normalization /@ Range[8]

fig1=Show[
ContourPlot[Norm[{x,y}]-1 == 0, {x, -1.5, 1.5}, {y, -1.5, 1.5}],
Graphics[Text[Style["sdf(x,y) = 0", 15]]]
]

fig2 = Show[
RegionPlot[Abs[(Norm[{x,y}]-1)] - 0.2 < 0, {x, -1.5, 1.5}, {y, -1.5, 1.5}],
Graphics[{
Text[Style["|sdf(x,y)| - (t/2) < 0", 15]], 
Arrow[{{0, 0.5}, {0, 0.8}}],
Arrow[{{0, 1.5}, {0, 1.2}}],
Line[{{-0.1, 1.2}, {0.1, 1.2}}],
Line[{{-0.1, 0.8}, {0.1, 0.8}}],
Text[Style["t", 15], {0, 1}]
}]
]

GraphicsRow[{fig1, fig2}]