MRENDER(1)

πŸ“¦ version 1.11.0, in fedora 43, fedora 44

πŸ’… mrender β€” like, the whole manual, but make it make sense

okay bestie, so this is mrender(1) from the User Commands section of the manual, and it's genuinely one of those pages that looks scary until somebody explains it to you. That somebody is me. Sit down, hydrate, let's go. 🫢


✨ NAME ✨

mrender β€” a demonstration of hoover, gage, and nrrd measures. yes that's the whole name section. it's giving "we're humble but we're also running the entire ray-casting pipeline." πŸ’…


🌸 SYNOPSIS 🌸

mrender [@file ...]  [-i <nin>] -k <kind> -fr <eye pos> [-at <at pos>]
[-up <up dir>] [-rh] [-or] -dn <near> -di <image> -df <far> [-ar] [-ur
<uMin uMax>] [-vr <vMin vMax>] [-fv <field of view>] [-offfr] [-turn
<angle>] [-is <image size>] [-iss <scale>] [-k00 <kernel>] [-k11
<kernel>] [-k22 <kernel>] [-rn] -q <query> -m <measure> [-gmc
<min gradmag>] [-fn <from nan>] [-step [-nt <# threads>] [-vp
<img coords>] [-o <filename>]

okay so like, look at the brackets. no brackets = mandatory, brackets = optional, and there are so many optional ones. the mandatory core is literally just: -k, -fr, -dn, -di, -df, -q, -m. everything else is ✨vibes✨.


πŸ’– DESCRIPTION πŸ’–

here's the tea 🍡: mrender uses hoover to cast rays through a volume β€” and that volume can be scalar, vector, or tensor, we support all three, we're not picky. Then gage measures one of various quantities along those rays. Then a specified nrrd measure reduces all the values along a ray down to one scalar. That single scalar gets saved into the output, which is a (double) image.

so: rays in, one number per ray out. it's literally the main character of reduction pipelines. periodt. πŸ‘‘


πŸŽ€ OPTIONS πŸŽ€

  • @file ... β€” response file(s) containing command-line arguments. yes you can put your args in a file, we love a low-effort queen.
  • -i <nin> β€” the input nrrd to render, type nrrd. default is "". (empty string, so like, nothing. don't leave it empty unless you enjoy confusion πŸ™ˆ)
  • -k <kind> β€” the "kind" of volume. your options are "scalar", "vector", or "tensor". type is gageKind.
  • -fr <eye pos> β€” camera eye point, 3 doubles. this is where the camera literally is. required, bestie.
  • -at <at pos> β€” camera look-at point, 3 doubles. default: "0 0 0". this is where the camera is staring. πŸ‘€
  • -up <up dir> β€” camera pseudo-up vector, 3 doubles. default: "0 0 1".
  • -rh β€” use a right-handed UVN frame (V points down). noted. V points down, don't fight it.
  • -or β€” orthogonal (not perspective) projection. so, like, no vanishing point drama.
  • -dn <near> β€” distance to the near clipping plane (double). required.
  • -di <image> β€” distance to the image plane (double). required.
  • -df <far> β€” distance to the far clipping plane (double). required.
  • -ar β€” near, image, and far plane distances are relative to the at point, instead of the eye point. this one flips the whole reference frame, so pay attention.
  • -ur <uMin uMax> β€” range in the U direction of the image plane, 2 doubles. default: "nan nan".
  • -vr <vMin vMax> β€” range in the V direction of the image plane, 2 doubles. default: "nan nan".
  • -fv <field of view> β€” angle, in degrees, vertically subtended by the view window (double). default: "20".
  • -offfr β€” the given eye point (-fr) is to be interpreted as an offset from the at point. so -fr stops meaning "where you are" and starts meaning "how far from the thing you're looking at." plot twist.
  • -turn <angle> β€” angle in degrees by which to rotate the from point around true up, for making stereo pairs. Positive means move towards positive U (the right) (double). default: "0.0".
  • -is <image size> β€” image dimensions, 2 ints. default: "256 256".
  • -iss <scale> β€” scaling of image size (from -is) (float). default: "1.0".
  • -k00 <kernel> β€” value reconstruction kernel (kernel specification). default: "tent".
  • -k11 <kernel> β€” first derivative kernel (kernel specification). default: "cubicd:1,0".
  • -k22 <kernel> β€” second derivative kernel (kernel specification). default: "cubicdd:1,0".
  • -rn β€” renormalize kernel weights at each new sample location. here's the caveat: "Accurate" kernels don't need this, and doing it always makes things go slower. so like, it works, but at what cost 😭
  • -q <query> β€” the quantity (scalar, vector, or matrix) to learn by probing (string).
  • -m <measure> β€” how to collapse the list of ray samples into one scalar. the possibilities include:
    • "min", "max", "mean", "median", "mode", "variance", "skew": (self-explanatory) β€” and honestly? they are. slay.
    • "intc", "slope", "error": intercept, slope, and error from line fitting.
    • "stdv": standard deviation.
    • "cov": coefficient of variation.
    • "product", "sum": product or sum of all values.
    • "L1", "L2", "NL2", "RMS", "Linf": different norms.
    • "histo-min", "histo-max", "histo-mean", "histo-median", "histo-mode", "histo-product", "histo-l2", "histo-sum", "histo-variance", "histo-sd": same measures, but for situations where we're given not the original values, but a histogram of them. (type: measure)
      • -gmc <min gradmag> β€” for curvature-based queries, set the answer to zero when gradient magnitude is below this (double). default: "0.0".
      • -fn <from nan> β€” when histo-based measures generate NaN answers, the value that should be substituted for NaN (double). default: "nan".
      • -step <size> β€” step size along ray in world space (double). default: "0.01".
      • -nt <# threads> β€” number of threads hoover should use (int). default: "1".
      • -vp <img coords> β€” pixel coordinates for which to turn on verbose debugging messages, or "-1 -1" to disable this, 2 ints. default: "-1 -1".
      • -o <filename> β€” file to write output nrrd to (string). default: "-".
ngl those last six are nested under the histo list in the original page, and I'm keeping them exactly where they were, because I do not mess with the facts. ✨ the facts do not get rewritten, only re-vibed.

πŸ¦‹ SEE ALSO πŸ¦‹

gprobe(1), ilk(1), miter(1), nrrdSanity(1), overrgb(1), puller(1), tend(1), unu(1), vprobe(1)

go read those too, they're all part of the same friend group. πŸ’œ


and that's the whole page, bestie!! this one's from April 2021, and the source is literally just MRENDER(1) β€” the page itself, doing its own thing. so yeah: April 2021, MRENDER(1). iconic, timeless, still casting rays. πŸŽ€βœ¨πŸŒˆ

πŸ“¦ where this page comes from