<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Pages on n4735 n0735</title><link>https://kaminate.github.io/pages/</link><description>Recent content in Pages on n4735 n0735</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 21 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://kaminate.github.io/pages/index.xml" rel="self" type="application/rss+xml"/><item><title>About me</title><link>https://kaminate.github.io/pages/about/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://kaminate.github.io/pages/about/</guid><description>&lt;p&gt;&lt;img loading="lazy" src="https://kaminate.github.io/pages/about/me.png"&gt;&lt;/p&gt;
&lt;p&gt;Hi, my name is Nate Park. I&amp;rsquo;m an origami artist, video game programmer, and rock climber.&lt;/p&gt;
&lt;h4 id="origami"&gt;&lt;a href="https://kaminate.github.io/pages/origami/"&gt;Origami&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;I have been designing and folding super complex origami for over 10 years. I used to go by OrigamiNate during the snkhan.co.uk/flickr era. More recently you can find me as OrigummyNate in the Origami-dan discord. I&amp;rsquo;ve exhibited my models in the OrigamiUSA NYC Convention. My favorite subjects to fold are nature and fantasy.&lt;/p&gt;</description></item><item><title>Gamedev</title><link>https://kaminate.github.io/pages/gamedev/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://kaminate.github.io/pages/gamedev/</guid><description>&lt;p&gt;Most code demos run in my game engine at &lt;a href="https://github.com/Kaminate/Tac"&gt;https://github.com/Kaminate/Tac&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="radiosity"&gt;Radiosity&lt;/h2&gt;
&lt;p&gt;Stochastic jacobi radiosity, with average radiance baked into vertex color (no final gather).
&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/radiosity.gif"&gt;&lt;/p&gt;
&lt;h2 id="raytrace"&gt;Raytrace&lt;/h2&gt;
&lt;p&gt;Cpu raytracer with reflections, refractions, and depth of field
&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/raytrace.png"&gt;&lt;/p&gt;
&lt;h2 id="ibl"&gt;IBL&lt;/h2&gt;
&lt;p&gt;A slide from a presentation I gave about 2014 Karis split-sum approximation.
&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/IBL.png"&gt;&lt;/p&gt;
&lt;h2 id="raymarch"&gt;Raymarch&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/raymarch.gif"&gt;&lt;/p&gt;
&lt;h2 id="voxelization"&gt;Voxelization&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/voxel.gif"&gt;&lt;/p&gt;
&lt;h2 id="torque"&gt;Torque&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/torq2.gif"&gt;&lt;/p&gt;
&lt;h2 id="skinning"&gt;Skinning&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/skin.gif"&gt;&lt;/p&gt;
&lt;h2 id="texture-repetition"&gt;Texture Repetition&lt;/h2&gt;
&lt;p&gt;iq&amp;rsquo;s method
&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/texture_2.gif"&gt;
&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/texture.gif"&gt;&lt;/p&gt;
&lt;h2 id="shadows"&gt;Shadows&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/shadow.gif"&gt;&lt;/p&gt;
&lt;h2 id="normal-map"&gt;Normal Map&lt;/h2&gt;
&lt;p&gt;Cube map, phong, reflections, normal map
&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/normal.gif"&gt;&lt;/p&gt;
&lt;h2 id="julia-fractal"&gt;Julia Fractal&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/julia.gif"&gt;
&lt;img loading="lazy" src="https://kaminate.github.io/pages/gamedev/julia.png"&gt;&lt;/p&gt;</description></item><item><title>Origami</title><link>https://kaminate.github.io/pages/origami/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://kaminate.github.io/pages/origami/</guid><description>&lt;p&gt;Each model is folded by me from a single square of paper, without cuts.
All works are original designs unless otherwise specified.&lt;/p&gt;
&lt;h2 id="ryu-zin"&gt;Ryu zin&lt;/h2&gt;
&lt;h3 id="ryu-zin-35"&gt;Ryu zin 3.5&lt;/h3&gt;
&lt;p&gt;Ryu zin 3.5 designed by Satoshi Kamiya, folded from 140 cm double tissue.&lt;br&gt;
Started folding on June 1, 2026 and finished on July 15, 2026.&lt;br&gt;
Exhibited at 2026 NYC OrigamiUSA Convention.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://kaminate.github.io/pages/origami/ryujin_ousa.jpg"&gt;
&lt;img loading="lazy" src="https://kaminate.github.io/pages/origami/ryujin_crease.jpg"&gt;&lt;/p&gt;
&lt;h3 id="ryu-zin-12"&gt;Ryu zin 1.2&lt;/h3&gt;
&lt;p&gt;Ryu zin 1.2 designed by Satoshi Kamiya, folded from 60 cm unryu.
&lt;img loading="lazy" src="https://kaminate.github.io/pages/origami/ryujin1.2.jpg"&gt;&lt;/p&gt;</description></item><item><title>Resume</title><link>https://kaminate.github.io/pages/resume/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://kaminate.github.io/pages/resume/</guid><description>&lt;script type="text/javascript" src= '/js/pdf-js/build/pdf.js'&gt;&lt;/script&gt;
&lt;style&gt;
#embed-pdf-container {
position: relative;
width: 100%;
height: auto;
min-height: 20vh;
}
.pdf-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
#the-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
.pdf-loadingWrapper {
display: none;
justify-content: center;
align-items: center;
width: 100%;
height: 350px;
}
.pdf-loading {
display: inline-block;
width: 50px;
height: 50px;
border: 3px solid #d2d0d0;;
border-radius: 50%;
border-top-color: #383838;
animation: spin 1s ease-in-out infinite;
-webkit-animation: spin 1s ease-in-out infinite;
}
#overlayText {
word-wrap: break-word;
display: grid;
justify-content: end;
}
#overlayText a {
position: relative;
top: 10px;
right: 4px;
color: #000;
margin: auto;
background-color: #eeeeee;
padding: 0.3em 1em;
border: solid 2px;
border-radius: 12px;
border-color: #00000030;
text-decoration: none;
}
#overlayText svg {
height: clamp(1em, 2vw, 1.4em);
width: clamp(1em, 2vw, 1.4em);
}
@keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
&lt;/style&gt;&lt;div class="embed-pdf-container" id="embed-pdf-container-2fcda2dd"&gt;
&lt;div class="pdf-loadingWrapper" id="pdf-loadingWrapper-2fcda2dd"&gt;
&lt;div class="pdf-loading" id="pdf-loading-2fcda2dd"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="overlayText"&gt;
&lt;a href="./resume%20nate.pdf" aria-label="Download" download&gt;
&lt;svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"&gt;
&lt;path d="M9 13c.3 0 .5-.1.7-.3L15.4 7 14 5.6l-4 4V1H8v8.6l-4-4L2.6 7l5.7 5.7c.2.2.4.3.7.3zm-7 2h14v2H2z" /&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;canvas class="pdf-canvas" id="pdf-canvas-2fcda2dd"&gt;&lt;/canvas&gt;
&lt;/div&gt;
&lt;div class="pdf-paginator" id="pdf-paginator-2fcda2dd"&gt;
&lt;button id="pdf-prev-2fcda2dd"&gt;Previous&lt;/button&gt;
&lt;button id="pdf-next-2fcda2dd"&gt;Next&lt;/button&gt; &amp;nbsp; &amp;nbsp;
&lt;span&gt;
&lt;span class="pdf-pagenum" id="pdf-pagenum-2fcda2dd"&gt;&lt;/span&gt; / &lt;span class="pdf-pagecount" id="pdf-pagecount-2fcda2dd"&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;a class="pdf-source" id="pdf-source-2fcda2dd" href="./resume%20nate.pdf"&gt;[pdf]&lt;/a&gt;
&lt;/div&gt;
&lt;noscript&gt;
View the PDF file &lt;a class="pdf-source" id="pdf-source-noscript-2fcda2dd" href="./resume%20nate.pdf"&gt;here&lt;/a&gt;.
&lt;/noscript&gt;
&lt;script type="text/javascript"&gt;
(function(){
var url = '.\/resume nate.pdf';
var hidePaginator = "" === "true";
var hideLoader = "" === "true";
var selectedPageNum = parseInt("") || 1;
var pdfjsLib = window['pdfjs-dist/build/pdf'];
if (pdfjsLib.GlobalWorkerOptions.workerSrc == '')
pdfjsLib.GlobalWorkerOptions.workerSrc = "https:\/\/kaminate.github.io\/" + 'js/pdf-js/build/pdf.worker.js';
var pdfDoc = null,
pageNum = selectedPageNum,
pageRendering = false,
pageNumPending = null,
scale = 3,
canvas = document.getElementById('pdf-canvas-2fcda2dd'),
ctx = canvas.getContext('2d'),
paginator = document.getElementById("pdf-paginator-2fcda2dd"),
loadingWrapper = document.getElementById('pdf-loadingWrapper-2fcda2dd');
showPaginator();
showLoader();
function renderPage(num) {
pageRendering = true;
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.promise.then(function() {
pageRendering = false;
showContent();
if (pageNumPending !== null) {
renderPage(pageNumPending);
pageNumPending = null;
}
});
});
document.getElementById('pdf-pagenum-2fcda2dd').textContent = num;
}
function showContent() {
loadingWrapper.style.display = 'none';
canvas.style.display = 'block';
}
function showLoader() {
if(hideLoader) return
loadingWrapper.style.display = 'flex';
canvas.style.display = 'none';
}
function showPaginator() {
if(hidePaginator) return
paginator.style.display = 'block';
}
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
function onPrevPage() {
if (pageNum &lt;= 1) {
return;
}
pageNum--;
queueRenderPage(pageNum);
}
document.getElementById('pdf-prev-2fcda2dd').addEventListener('click', onPrevPage);
function onNextPage() {
if (pageNum &gt;= pdfDoc.numPages) {
return;
}
pageNum++;
queueRenderPage(pageNum);
}
document.getElementById('pdf-next-2fcda2dd').addEventListener('click', onNextPage);
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
var numPages = pdfDoc.numPages;
document.getElementById('pdf-pagecount-2fcda2dd').textContent = numPages;
if(pageNum &gt; numPages) {
pageNum = numPages
}
renderPage(pageNum);
});
})();
&lt;/script&gt;</description></item></channel></rss>