{"id":4160,"date":"2016-02-13T07:58:21","date_gmt":"2016-02-13T13:58:21","guid":{"rendered":"http:\/\/www.realtimerendering.com\/blog\/?p=4160"},"modified":"2016-02-13T08:01:20","modified_gmt":"2016-02-13T14:01:20","slug":"why-tap","status":"publish","type":"post","link":"https:\/\/www.realtimerendering.com\/blog\/why-tap\/","title":{"rendered":"Why &#8220;tap&#8221;?"},"content":{"rendered":"<p>Kavita Bala asked, &#8220;What is the etymology of &#8216;tap&#8217; in texture filtering?&#8221;<\/p>\n<p>This is a term we use in graphics for taking a sample from a texture map. I didn&#8217;t know where it came from, and recall being\u00a0a bit mystified as to what it even meant when I first encountered it, finally puzzling it out from the context. Searching\u00a0around now, the earliest reference I could find in 3D graphics literature was <a href=\"http:\/\/http.developer.nvidia.com\/GPUGems3\/gpugems3_ch14.html\">in this article<\/a>, so I asked Dave Luebke,\u00a0who coauthored that paper.<\/p>\n<p>Dave replied:<\/p>\n<p style=\"padding-left: 30px;\">I think it&#8217;s actually very old and references the idea of putting a probe, as in an oscilloscope, to tap a signal (like tapping a pipe, meaning to take water out of it at a particular location, or tapping a maple tree for sap to make syrup from).<\/p>\n<p>Dave asked two other experts.<\/p>\n<p>Lance Williams replied:<\/p>\n<p style=\"padding-left: 30px;\">It&#8217;s traditional filter terminology. For example:<\/p>\n<p style=\"padding-left: 30px;\">&#8220;Filter Coefficients &#8211; the set of constants, also called tap weights, used to multiply against delayed signal sample values within a digital filter structure.&#8221;<\/p>\n<p>&#8220;A direct form discrete-time FIR filter of order N. The top part is an N-stage delay line with N + 1 taps.&#8221;<\/p>\n<p style=\"padding-left: 30px;\">&#8220;For FIR filters, there is no denominator in the transfer function and the filter order is merely the number of taps used in the filter structure.&#8221;<\/p>\n<p>John Montrym replied:<\/p>\n<p style=\"padding-left: 30px;\">Follow this trail:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Finite_impulse_response\">https:\/\/en.wikipedia.org\/wiki\/Finite_impulse_response<\/a> see phrase &#8220;tapped delay line&#8221; which takes you to:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_delay_line\">https:\/\/en.wikipedia.org\/wiki\/Digital_delay_line<\/a><\/p>\n<p style=\"padding-left: 30px;\">&#8220;tap&#8221; in texture filtering uses the terminology of old-time signal processing. It wouldn\u2019t surprise me if the notion of tapping a delay line takes you back to the 1930\u2019s or 1940\u2019s, though I don\u2019t have a specific reference for you.<\/p>\n<p style=\"padding-left: 30px;\">Radar was one of the early drivers for the development of signal processing theory &amp; practice.<\/p>\n<p style=\"padding-left: 30px;\">And your &#8220;tapping a water pipe&#8221; analogy is a pretty good one.<\/p>\n<p>If you know more, pass it on.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kavita Bala asked, &#8220;What is the etymology of &#8216;tap&#8217; in texture filtering?&#8221; This is a term we use in graphics for taking a sample from a texture map. I didn&#8217;t know where it came from, and recall being\u00a0a bit mystified as to what it even meant when I first encountered it, finally puzzling it out [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[597,596],"class_list":["post-4160","post","type-post","status-publish","format-standard","hentry","category-misc","tag-tap","tag-textures"],"_links":{"self":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/4160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/comments?post=4160"}],"version-history":[{"count":5,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/4160\/revisions"}],"predecessor-version":[{"id":4165,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/4160\/revisions\/4165"}],"wp:attachment":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/media?parent=4160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/categories?post=4160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/tags?post=4160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}