<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Glsl | Ben Ahlbrand CV</title><link>https://benjamin.ahlbrand.me/tags/glsl/</link><atom:link href="https://benjamin.ahlbrand.me/tags/glsl/index.xml" rel="self" type="application/rss+xml"/><description>Glsl</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 07 Jun 2017 00:00:00 +0000</lastBuildDate><image><url>https://benjamin.ahlbrand.me/media/sharing.png</url><title>Glsl</title><link>https://benjamin.ahlbrand.me/tags/glsl/</link></image><item><title>Parallax Occlusion Mapping OpenGL</title><link>https://benjamin.ahlbrand.me/post/2022-06-19-parallax-occlusion-mapping-opengl/</link><pubDate>Wed, 07 Jun 2017 00:00:00 +0000</pubDate><guid>https://benjamin.ahlbrand.me/post/2022-06-19-parallax-occlusion-mapping-opengl/</guid><description>&lt;p>I implemented parallax occlusion mapping / relief mapping in my C++ OpenGL engine sandbox to give a fake sense of 3d to textures with a height offset.&lt;/p></description></item><item><title>Procedural Night Sky</title><link>https://benjamin.ahlbrand.me/post/2021-12-08-procedural-night-sky/</link><pubDate>Mon, 07 Nov 2016 00:00:00 +0000</pubDate><guid>https://benjamin.ahlbrand.me/post/2021-12-08-procedural-night-sky/</guid><description>&lt;p>I generated a procedural night sky w/transparent quads w/a radial fall off in my c++ rendering framework.&lt;/p>
&lt;p>The algorithm is pretty simple and goes something like:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">// the trick is to sample an interesting distribution ;)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pts = sampleRange(xMagnitude, yMagnitude, zMagnitude, numStars)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">render(pts)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">captureSkybox()
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">// typical main loop here
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">while (true) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> drawSkybox()
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> drawScene()
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>