<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nicolas Vibert</title>
	<atom:link href="http://blog.neodyme.net/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.neodyme.net</link>
	<description>blogging time</description>
	<lastBuildDate>Tue, 01 May 2012 16:20:58 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CSG &amp; Solid BSP</title>
		<link>http://blog.neodyme.net/index.php/2012/03/csg-solid-bsp/</link>
		<comments>http://blog.neodyme.net/index.php/2012/03/csg-solid-bsp/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 01:22:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3D]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/?p=746</guid>
		<description><![CDATA[A new article is comming soon about an old but very interesting technique for CSG.]]></description>
			<content:encoded><![CDATA[<table>
<tr>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/03/csg_cubes.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/03/csg_cubes-300x223.jpg" alt="" title="csg_cubes" width="300" height="223" class="alignleft size-medium wp-image-748" /></a>
</td>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/03/csg_cube_torus.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/03/csg_cube_torus-300x223.jpg" alt="" title="csg_cube_torus" width="300" height="223" class="alignleft size-medium wp-image-747" /></a>
</td>
</tr>
</table>
<p><br/><br />
A new article is comming soon about an old but very interesting technique for CSG.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2012/03/csg-solid-bsp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Full software openGL rewrite in java</title>
		<link>http://blog.neodyme.net/index.php/2012/02/full-software-opengl-rewrite-in-java/</link>
		<comments>http://blog.neodyme.net/index.php/2012/02/full-software-opengl-rewrite-in-java/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 06:14:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/?p=724</guid>
		<description><![CDATA[Just for fun i write a small rasterizer engine 100% in java (no java 3d). It mimic opengl immediate mode. Features are: GL_COLOR_BUFFER_BIT/GL_DEPTH_BUFFER_BIT/GL_ACCUM_BUFFER_BIT glShadeModel: GL_SMOOTH/GL_FLAT texture mapping (linear, not perspective correct) GL_POINTS/GL_LINES/GL_LINE_STRIP/GL_LINE_LOOP/GL_TRIANGLES/GL_TRIANGLE_STRIP/GL_QUADS/GL_QUAD_STRIP/ use gl matrix stack use gl matrix stack glDepthRange, glCullFace Sample code for the Sierpinski Gasket. As you can see it very easy. [...]]]></description>
			<content:encoded><![CDATA[<p>Just for fun i write a small rasterizer engine 100% in java (no java 3d). It mimic opengl immediate mode. </p>
<p>Features are:</p>
<ul>
<li>GL_COLOR_BUFFER_BIT/GL_DEPTH_BUFFER_BIT/GL_ACCUM_BUFFER_BIT</li>
<li>glShadeModel: GL_SMOOTH/GL_FLAT</li>
<li>texture mapping (linear, not perspective correct)</li>
<li>GL_POINTS/GL_LINES/GL_LINE_STRIP/GL_LINE_LOOP/GL_TRIANGLES/GL_TRIANGLE_STRIP/GL_QUADS/GL_QUAD_STRIP/</li>
<li>use gl matrix stack</li>
<li>use gl matrix stack</li>
<li>glDepthRange, glCullFace</li>
</ul>
<p><br/><br />
<br/><br />
Sample code for the  Sierpinski Gasket. As you can see it very easy.</p>
<table>
<tr>
<td>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p724code2'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7242"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
</pre></td><td class="code" id="p724code2"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">samples</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">fuzzGl.CGlCore</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">fuzzGl.Glenum</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">fuzzGl.backBuffer.CBackBuffer</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">fuzzGl.geometry.Vertex2</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CSierpinskiGasket3DSmooth <span style="color: #000000; font-weight: bold;">extends</span> CSamplesBase
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">int</span> m_width<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> m_height<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">double</span> r<span style="color: #339933;">=</span><span style="color: #cc66cc;">0.0</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> RECURSTION_DEPTH<span style="color: #339933;">=</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> init<span style="color: #009900;">&#40;</span>CBackBuffer bb<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        CGlCore.<span style="color: #006633;">setBackBuffer</span><span style="color: #009900;">&#40;</span>bb<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c<span style="color: #339933;">=</span>CGlCore.<span style="color: #006633;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        m_width<span style="color: #339933;">=</span>bb.<span style="color: #006633;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        m_height<span style="color: #339933;">=</span>bb.<span style="color: #006633;">getHeight</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> update<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>c<span style="color: #339933;">==</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
        <span style="color: #000000; font-weight: bold;">return</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glClearColor</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">1.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glEnable</span><span style="color: #009900;">&#40;</span>Glenum.<span style="color: #006633;">GL_DEPTH_TEST</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glClearDepth</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glEnable</span><span style="color: #009900;">&#40;</span>Glenum.<span style="color: #006633;">GL_CULL_FACE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glCullFace</span><span style="color: #009900;">&#40;</span>Glenum.<span style="color: #006633;">GL_BACK</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//        c.glShadeModel(Glenum.GL_FLAT);</span>
&nbsp;
        c.<span style="color: #006633;">glClear</span><span style="color: #009900;">&#40;</span>Glenum.<span style="color: #006633;">GL_COLOR_BUFFER_BIT</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glClear</span><span style="color: #009900;">&#40;</span>Glenum.<span style="color: #006633;">GL_DEPTH_BUFFER_BIT</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glViewport</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,m_width,m_height<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glMatrixMode</span><span style="color: #009900;">&#40;</span>Glenum.<span style="color: #006633;">GL_PROJECTION</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">gluPerspective</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">45.0</span>, m_width<span style="color: #339933;">/</span>m_height, <span style="color: #cc66cc;">0.001</span>, <span style="color: #cc66cc;">100.0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glMatrixMode</span><span style="color: #009900;">&#40;</span>Glenum.<span style="color: #006633;">GL_MODELVIEW</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glLoadIdentity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">gluLookAt</span><span style="color: #009900;">&#40;</span>
                <span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">5.0</span>,
                <span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">0.0</span>,
                <span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">1.0</span>,<span style="color: #cc66cc;">0.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glPushMatrix</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glRotated</span><span style="color: #009900;">&#40;</span>r,<span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">1.0</span>,<span style="color: #cc66cc;">0.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glRotated</span><span style="color: #009900;">&#40;</span>r,<span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">1.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glScaled</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">6.0</span>,<span style="color: #cc66cc;">6.0</span>,<span style="color: #cc66cc;">6.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        SierpinskiGasket3f<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0.7</span>,<span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glPopMatrix</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        c.<span style="color: #006633;">glFlush</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        r<span style="color: #339933;">+=</span><span style="color: #cc66cc;">0.2</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> SierpinskiGasket3f_A<span style="color: #009900;">&#40;</span>Vertex2 _point0Arr, Vertex2 _point1Arr, Vertex2 _point2Arr, Vertex2 _point3Arr, <span style="color: #000066; font-weight: bold;">int</span> _count<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>_count <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//reduce count</span>
		_count <span style="color: #339933;">-=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//new points array</span>
		Vertex2 newPoint01Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Vertex2 newPoint12Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Vertex2 newPoint20Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Vertex2 newPoint03Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Vertex2 newPoint13Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Vertex2 newPoint23Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//fill points</span>
        newPoint01Arr.<span style="color: #006633;">setLerp</span><span style="color: #009900;">&#40;</span>_point0Arr, _point1Arr,<span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        newPoint12Arr.<span style="color: #006633;">setLerp</span><span style="color: #009900;">&#40;</span>_point1Arr, _point2Arr,<span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        newPoint20Arr.<span style="color: #006633;">setLerp</span><span style="color: #009900;">&#40;</span>_point2Arr, _point0Arr,<span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        newPoint03Arr.<span style="color: #006633;">setLerp</span><span style="color: #009900;">&#40;</span>_point0Arr, _point3Arr,<span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        newPoint13Arr.<span style="color: #006633;">setLerp</span><span style="color: #009900;">&#40;</span>_point1Arr, _point3Arr,<span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        newPoint23Arr.<span style="color: #006633;">setLerp</span><span style="color: #009900;">&#40;</span>_point2Arr, _point3Arr,<span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//  sub-triangle 1</span>
		SierpinskiGasket3f_A<span style="color: #009900;">&#40;</span>newPoint01Arr, _point1Arr, newPoint12Arr, newPoint13Arr, _count<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//  sub-triangle 2</span>
		SierpinskiGasket3f_A<span style="color: #009900;">&#40;</span>newPoint12Arr, _point2Arr, newPoint20Arr, newPoint23Arr, _count<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//  sub-triangle 3</span>
		SierpinskiGasket3f_A<span style="color: #009900;">&#40;</span>newPoint01Arr, _point0Arr, newPoint20Arr, newPoint03Arr, _count<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//  sub-triangle 4</span>
		SierpinskiGasket3f_A<span style="color: #009900;">&#40;</span>newPoint03Arr, newPoint13Arr, newPoint23Arr, _point3Arr, _count<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">else</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//draw faces</span>
		<span style="color: #666666; font-style: italic;">//side 0 (bottom)</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//0</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//2</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//1</span>
        c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//side 1</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//0</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//1</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//3</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//side 2</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//1</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//2</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//3</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//side 3</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//2</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//0</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		c.<span style="color: #006633;">glColor4f</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">0.7</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//3</span>
		c.<span style="color: #006633;">glVertex3d</span><span style="color: #009900;">&#40;</span>_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">x</span>,_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">y</span>,_point3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
    <span style="color: #000066; font-weight: bold;">void</span> SierpinskiGasket3f<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span> _rad, <span style="color: #000066; font-weight: bold;">int</span> _count<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        Vertex2 points0Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> points0Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">setFromDouble</span><span style="color: #009900;">&#40;</span>_rad, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        Vertex2 points1Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> points1Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">setFromDouble</span><span style="color: #009900;">&#40;</span>_rad<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>0.5f<span style="color: #009900;">&#41;</span>, _rad<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>0.866025404f<span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        Vertex2 points2Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> points2Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">setFromDouble</span><span style="color: #009900;">&#40;</span>_rad<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>0.5f<span style="color: #009900;">&#41;</span>, _rad<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>0.866025404f<span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        Vertex2 points3Arr<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> Vertex2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> points3Arr.<span style="color: #006633;">posClip</span>.<span style="color: #006633;">setFromDouble</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, _rad,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glBegin</span><span style="color: #009900;">&#40;</span>Glenum.<span style="color: #006633;">GL_TRIANGLES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        SierpinskiGasket3f_A<span style="color: #009900;">&#40;</span>points0Arr, points1Arr, points2Arr, points3Arr, _count<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">glEnd</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> deinit<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</td>
</tr>
</table>
<p>Some screen shots:</p>
<table>
<tr>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-51-17-24.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-51-17-24-300x300.jpg" alt="" title="java 2012-02-13 00-51-17-24" width="300" height="300" class="alignleft size-medium wp-image-732" /></a>
</td>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-50-00-58.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-50-00-58-300x300.jpg" alt="" title="java 2012-02-13 00-50-00-58" width="300" height="300" class="alignleft size-medium wp-image-731" /></a>
</td>
</tr>
<tr>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-49-28-35.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-49-28-35-300x300.jpg" alt="" title="java 2012-02-13 00-49-28-35" width="300" height="300" class="alignleft size-medium wp-image-730" /></a>
</td>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-47-34-93.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-47-34-93-300x300.jpg" alt="" title="java 2012-02-13 00-47-34-93" width="300" height="300" class="alignleft size-medium wp-image-729" /></a></p>
<tr>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-47-17-81.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-47-17-81-300x300.jpg" alt="" title="java 2012-02-13 00-47-17-81" width="300" height="300" class="alignleft size-medium wp-image-728" /></a>
</td>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-46-52-11.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-46-52-11-300x300.jpg" alt="" title="java 2012-02-13 00-46-52-11" width="300" height="300" class="alignleft size-medium wp-image-727" /></a>
</td>
</tr>
<tr>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-46-35-64.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-46-35-64-300x300.jpg" alt="" title="java 2012-02-13 00-46-35-64" width="300" height="300" class="alignleft size-medium wp-image-726" /></a>
</td>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-45-45-71.bmp"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/java-2012-02-13-00-45-45-71.bmp" alt="" title="java 2012-02-13 00-45-45-71" width="300" height="300" class="alignleft size-full wp-image-725" /></a>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2012/02/full-software-opengl-rewrite-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metaballs and reflection with raymarching</title>
		<link>http://blog.neodyme.net/index.php/2012/02/metaballs-and-reflection-with-raymarching/</link>
		<comments>http://blog.neodyme.net/index.php/2012/02/metaballs-and-reflection-with-raymarching/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 00:03:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/?p=702</guid>
		<description><![CDATA[simple way to render iso surface, but is definitely not the faster. Get the fragment shader here ?View Code GLSL1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [...]]]></description>
			<content:encoded><![CDATA[<p>simple way to render iso surface, but is definitely not the faster.</p>
<table>
<tr>
<td>
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box tube-css'>
<video class='video-js' width='400' height='264'  controls="controls" preload="auto"   >
<source src="http://blog.neodyme.net/wp-content/uploads/2012/02/test5-2012-02-09-16-55-51-33.f4v" type="video/mp4" />
<!-- file not found: D:\web\blog.neodyme.net/videos/ -->
<object id='vjs-ff-test5-2012-02-09-16-55-51-33.f4v' class='vjs-flash-fallback'  width='400' height='264' type='application/x-shockwave-flash' data='http://blog.neodyme.net/wp-content/plugins/secure-html5-video-player/flowplayer/flowplayer-3.2.7.swf'>
<param name='movie' value='http://blog.neodyme.net/wp-content/plugins/secure-html5-video-player/flowplayer/flowplayer-3.2.7.swf' />
<param name='wmode' value='transparent' />
<param name='allowfullscreen' value='true' />
<param name='flashvars' value='config={"playlist":[  {"url": "http%3A%2F%2Fblog.neodyme.net%2Fwp-content%2Fuploads%2F2012%2F02%2Ftest5-2012-02-09-16-55-51-33.f4v" ,"autoPlay":true ,"autoBuffering":true }]}' />

</object>
</video>
<p class='vjs-no-video'><strong>Download Video:</strong>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/test5-2012-02-09-16-55-51-33.f4v">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->

</td>
</tr>
</table>
<p><br/><br />
Get the fragment shader <a href='http://blog.neodyme.net/wp-content/uploads/2012/02/frag.txt'>here</a></p>
<table>
<tr>
<td>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p702code4'); return false;">View Code</a> GLSL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7024"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
</pre></td><td class="code" id="p702code4"><pre class="glsl" style="font-family:monospace;"><span style="color: #009900;">#version 130</span>
&nbsp;
<span style="color: #333399; font-weight: bold;">uniform</span> <span style="color: #000066; font-weight: bold;">vec2</span> resolution<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #333399; font-weight: bold;">uniform</span> <span style="color: #000066; font-weight: bold;">vec3</span> pos1<span style="color: #000066;">;</span>
<span style="color: #333399; font-weight: bold;">uniform</span> <span style="color: #000066; font-weight: bold;">vec3</span> pos2<span style="color: #000066;">;</span>
<span style="color: #333399; font-weight: bold;">uniform</span> <span style="color: #000066; font-weight: bold;">vec3</span> pos3<span style="color: #000066;">;</span>
<span style="color: #333399; font-weight: bold;">uniform</span> <span style="color: #000066; font-weight: bold;">vec3</span> pos4<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">vec4</span> fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">16</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #009900;">#define size  0.4</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">struct</span> s_ray
<span style="color: #000066;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> origin<span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> direction<span style="color: #000066;">;</span>
<span style="color: #000066;">&#125;</span><span style="color: #000066;">;</span>
&nbsp;
s_ray		ray<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">float</span> pot<span style="color: #000066;">&#40;</span><span style="color: #000066; font-weight: bold;">vec3</span> at<span style="color: #000066;">,</span> <span style="color: #000066; font-weight: bold;">vec3</span> ballCenter<span style="color: #000066;">&#41;</span>
<span style="color: #000066;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">vec3</span> tmp<span style="color: #000066;">=</span>at<span style="color: #000066;">-</span>ballCenter<span style="color: #000066;">;</span>
	<span style="color: #000066; font-weight: bold;">float</span> d<span style="color: #000066;">=</span><span style="color: #993333; font-weight: bold;">dot</span><span style="color: #000066;">&#40;</span>tmp<span style="color: #000066;">,</span>tmp<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
	<span style="color: #000000; font-weight: bold;">return</span> d<span style="color: #000066;">;</span>
<span style="color: #000066;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #000066; font-weight: bold;">float</span> field<span style="color: #000066;">&#40;</span><span style="color: #000066; font-weight: bold;">vec3</span> p<span style="color: #000066;">&#41;</span> 
<span style="color: #000066;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">float</span> potentiel<span style="color: #000066;">=</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">;</span>
&nbsp;
	potentiel <span style="color: #000066;">+=</span> size<span style="color: #000066;">/</span>pot<span style="color: #000066;">&#40;</span>p<span style="color: #000066;">,</span>pos1<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
	potentiel <span style="color: #000066;">+=</span> size<span style="color: #000066;">/</span>pot<span style="color: #000066;">&#40;</span>p<span style="color: #000066;">,</span>pos2<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
	potentiel <span style="color: #000066;">+=</span> size<span style="color: #000066;">/</span>pot<span style="color: #000066;">&#40;</span>p<span style="color: #000066;">,</span>pos3<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
	potentiel <span style="color: #000066;">+=</span> size<span style="color: #000066;">/</span>pot<span style="color: #000066;">&#40;</span>p<span style="color: #000066;">,</span>pos4<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>	
	<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">1.0</span><span style="color: #000066;">-</span>potentiel<span style="color: #000066;">;</span>
<span style="color: #000066;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">bool</span> intPlane<span style="color: #000066;">&#40;</span> <span style="color: #333399; font-weight: bold;">in</span> <span style="color: #000066; font-weight: bold;">vec4</span> plane<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">in</span> s_ray ray<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">in</span> <span style="color: #000066; font-weight: bold;">float</span> tm<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">float</span> t <span style="color: #000066;">&#41;</span>
<span style="color: #000066;">&#123;</span>
    t <span style="color: #000066;">=</span> <span style="color: #000066;">-</span><span style="color: #000066;">&#40;</span><span style="color: #993333; font-weight: bold;">dot</span><span style="color: #000066;">&#40;</span>plane<span style="color: #000066;">.</span><span style="color: #006600;">xyz</span><span style="color: #000066;">,</span>ray<span style="color: #000066;">.</span><span style="color: #006600;">origin</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span>plane<span style="color: #000066;">.</span><span style="color: #006600;">w</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">/</span><span style="color: #993333; font-weight: bold;">dot</span><span style="color: #000066;">&#40;</span>plane<span style="color: #000066;">.</span><span style="color: #006600;">xyz</span><span style="color: #000066;">,</span>ray<span style="color: #000066;">.</span><span style="color: #006600;">direction</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066;">&#40;</span>t <span style="color: #000066;">&gt;</span> <span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span> <span style="color: #000066;">&amp;&amp;</span> <span style="color: #000066;">&#40;</span>t <span style="color: #000066;">&lt;</span> tm<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000066;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">bool</span> trace<span style="color: #000066;">&#40;</span>s_ray ray<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">in</span> <span style="color: #000066; font-weight: bold;">float</span> maxDistance<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">in</span> <span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">float</span> t <span style="color: #000066;">&#41;</span>
<span style="color: #000066;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">float</span> minDistance <span style="color: #000066;">=</span> <span style="color: #0000ff;">0.3</span><span style="color: #000066;">;</span>
	<span style="color: #000066; font-weight: bold;">float</span> <span style="color: #993333; font-weight: bold;">distance</span> <span style="color: #000066;">=</span> <span style="color: #0000ff;">999.0</span><span style="color: #000066;">;</span>
	<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #000066;">&#40;</span>t <span style="color: #000066;">&lt;</span> maxDistance<span style="color: #000066;">&#41;</span>
	<span style="color: #000066;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> position <span style="color: #000066;">=</span> ray<span style="color: #000066;">.</span><span style="color: #006600;">origin</span> <span style="color: #000066;">+</span> t <span style="color: #000066;">*</span> ray<span style="color: #000066;">.</span><span style="color: #006600;">direction</span><span style="color: #000066;">;</span>
		<span style="color: #993333; font-weight: bold;">distance</span> <span style="color: #000066;">=</span> field<span style="color: #000066;">&#40;</span>position<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span><span style="color: #993333; font-weight: bold;">distance</span> <span style="color: #000066;">&lt;</span> minDistance <span style="color: #000066;">&amp;&amp;</span> distance<span style="color: #000066;">&gt;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span>
		<span style="color: #000066;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">break</span><span style="color: #000066;">;</span>
		<span style="color: #000066;">&#125;</span>			
		t <span style="color: #000066;">+=</span> <span style="color: #0000ff;">0.02</span><span style="color: #000066;">;</span>
	<span style="color: #000066;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066;">&#40;</span><span style="color: #993333; font-weight: bold;">distance</span> <span style="color: #000066;">&lt;</span> minDistance <span style="color: #000066;">&amp;&amp;</span> distance<span style="color: #000066;">&gt;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000066;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> Render_plans<span style="color: #000066;">&#40;</span>s_ray ray<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">vec3</span> position<span style="color: #000066;">,</span><span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">vec4</span> ob<span style="color: #000066;">,</span><span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">vec4</span> co<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">in</span> <span style="color: #000066; font-weight: bold;">float</span> tm<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">float</span> t <span style="color: #000066;">&#41;</span>
<span style="color: #000066;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>intPlane<span style="color: #000066;">&#40;</span>fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span>ray<span style="color: #000066;">,</span> tm<span style="color: #000066;">,</span>t<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span>  <span style="color: #666666; font-style: italic;">//left</span>
	<span style="color: #000066;">&#123;</span> ob <span style="color: #000066;">=</span> fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span> co <span style="color: #000066;">=</span> <span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> tm <span style="color: #000066;">=</span> t<span style="color: #000066;">;</span> <span style="color: #000066;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>intPlane<span style="color: #000066;">&#40;</span>fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span>ray<span style="color: #000066;">,</span>tm<span style="color: #000066;">,</span>t<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #666666; font-style: italic;">//right</span>
	<span style="color: #000066;">&#123;</span> ob <span style="color: #000066;">=</span> fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span> co <span style="color: #000066;">=</span> <span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> tm <span style="color: #000066;">=</span> t<span style="color: #000066;">;</span> <span style="color: #000066;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>intPlane<span style="color: #000066;">&#40;</span>fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span>ray<span style="color: #000066;">,</span> tm<span style="color: #000066;">,</span>t<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #666666; font-style: italic;">//top</span>
	<span style="color: #000066;">&#123;</span> ob <span style="color: #000066;">=</span> fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span> co <span style="color: #000066;">=</span> <span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> tm <span style="color: #000066;">=</span> t<span style="color: #000066;">;</span> <span style="color: #000066;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>intPlane<span style="color: #000066;">&#40;</span>fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">3</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span>ray<span style="color: #000066;">,</span> tm<span style="color: #000066;">,</span>t<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #666666; font-style: italic;">//bottom</span>
	<span style="color: #000066;">&#123;</span> ob <span style="color: #000066;">=</span> fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">3</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span> co <span style="color: #000066;">=</span> <span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> tm <span style="color: #000066;">=</span> t<span style="color: #000066;">;</span> <span style="color: #000066;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>intPlane<span style="color: #000066;">&#40;</span>fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">4</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span>ray<span style="color: #000066;">,</span> tm<span style="color: #000066;">,</span>t<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #666666; font-style: italic;">//back</span>
	<span style="color: #000066;">&#123;</span> ob <span style="color: #000066;">=</span> fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">4</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span> co <span style="color: #000066;">=</span> <span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> tm <span style="color: #000066;">=</span> t<span style="color: #000066;">;</span> <span style="color: #000066;">&#125;</span>
<span style="color: #000066;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> Render<span style="color: #000066;">&#40;</span>s_ray ray<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">vec3</span> position<span style="color: #000066;">,</span><span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">vec4</span> ob<span style="color: #000066;">,</span><span style="color: #333399; font-weight: bold;">out</span> <span style="color: #000066; font-weight: bold;">vec4</span> co<span style="color: #000066;">&#41;</span>
<span style="color: #000066;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">float</span> tm<span style="color: #000066;">=</span><span style="color: #0000ff;">11.0</span><span style="color: #000066;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> t<span style="color: #000066;">=</span><span style="color: #0000ff;">0.1</span><span style="color: #000066;">;</span>
&nbsp;
	Render_plans<span style="color: #000066;">&#40;</span>ray<span style="color: #000066;">,</span> position<span style="color: #000066;">,</span>ob<span style="color: #000066;">,</span>co<span style="color: #000066;">,</span> tm<span style="color: #000066;">,</span>t<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
	t<span style="color: #000066;">=</span><span style="color: #0000ff;">0.1</span><span style="color: #000066;">;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>trace<span style="color: #000066;">&#40;</span>ray<span style="color: #000066;">,</span>tm<span style="color: #000066;">,</span>t<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span>
	<span style="color: #000066;">&#123;</span>
		<span style="color: #009900;">#define epsilon 0.2</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> camera_direction<span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.1</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> materialDiffuse<span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.2</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.4</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">float</span> materialExponenet<span style="color: #000066;">=</span><span style="color: #0000ff;">256.0</span><span style="color: #000066;">;</span>
		<span style="color: #666666; font-style: italic;">//</span>
		<span style="color: #666666; font-style: italic;">//normal</span>
		<span style="color: #666666; font-style: italic;">//</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> hitpoint <span style="color: #000066;">=</span> ray<span style="color: #000066;">.</span><span style="color: #006600;">origin</span> <span style="color: #000066;">+</span> t <span style="color: #000066;">*</span> ray<span style="color: #000066;">.</span><span style="color: #006600;">direction</span><span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> normal<span style="color: #000066;">;</span>
		normal<span style="color: #000066;">.</span><span style="color: #006600;">x</span><span style="color: #000066;">=</span>field<span style="color: #000066;">&#40;</span>hitpoint<span style="color: #000066;">+</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span>epsilon<span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		normal<span style="color: #000066;">.</span><span style="color: #006600;">y</span><span style="color: #000066;">=</span>field<span style="color: #000066;">&#40;</span>hitpoint<span style="color: #000066;">+</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span>epsilon<span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		normal<span style="color: #000066;">.</span><span style="color: #006600;">z</span><span style="color: #000066;">=</span>field<span style="color: #000066;">&#40;</span>hitpoint<span style="color: #000066;">+</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span>epsilon<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		normal<span style="color: #000066;">-=</span>field<span style="color: #000066;">&#40;</span>hitpoint<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		normal<span style="color: #000066;">=</span><span style="color: #993333; font-weight: bold;">normalize</span><span style="color: #000066;">&#40;</span>normal<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//</span>
		<span style="color: #666666; font-style: italic;">//light</span>
		<span style="color: #666666; font-style: italic;">//</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> lightsPosition<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">5</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">int</span> numlight<span style="color: #000066;">=</span><span style="color: #0000ff;">5</span><span style="color: #000066;">;</span>
		lightsPosition<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		lightsPosition<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		lightsPosition<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		lightsPosition<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">3</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		lightsPosition<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">4</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> color<span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">vec3</span> lightsDiffuse<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">5</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span>
&nbsp;
		lightsDiffuse<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		lightsDiffuse<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		lightsDiffuse<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		lightsDiffuse<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">3</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		lightsDiffuse<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">4</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.5</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">for</span><span style="color: #000066;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>i<span style="color: #000066;">&lt;</span>numlight<span style="color: #000066;">;</span>i<span style="color: #000066;">++</span><span style="color: #000066;">&#41;</span>
		<span style="color: #000066;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">vec3</span> light_dir<span style="color: #000066;">=</span><span style="color: #993333; font-weight: bold;">normalize</span><span style="color: #000066;">&#40;</span>lightsPosition<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">-</span>hitpoint<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">//diffuse</span>
			<span style="color: #000066; font-weight: bold;">float</span> diffuse<span style="color: #000066;">=</span><span style="color: #993333; font-weight: bold;">max</span><span style="color: #000066;">&#40;</span><span style="color: #993333; font-weight: bold;">dot</span><span style="color: #000066;">&#40;</span>light_dir<span style="color: #000066;">,</span>normal<span style="color: #000066;">&#41;</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
			color<span style="color: #000066;">+=</span><span style="color: #000066;">&#40;</span>lightsDiffuse<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">*</span>diffuse<span style="color: #000066;">&#41;</span><span style="color: #000066;">.</span><span style="color: #006600;">xyz</span><span style="color: #000066;">*</span>materialDiffuse<span style="color: #000066;">.</span><span style="color: #006600;">xyz</span><span style="color: #000066;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">//white specular</span>
			<span style="color: #000066; font-weight: bold;">float</span> specular<span style="color: #000066;">=</span><span style="color: #993333; font-weight: bold;">max</span><span style="color: #000066;">&#40;</span><span style="color: #993333; font-weight: bold;">dot</span><span style="color: #000066;">&#40;</span><span style="color: #993333; font-weight: bold;">reflect</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">-</span>light_dir<span style="color: #000066;">,</span>normal<span style="color: #000066;">&#41;</span><span style="color: #000066;">,</span>camera_direction<span style="color: #000066;">&#41;</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
			color<span style="color: #000066;">+=</span><span style="color: #993333; font-weight: bold;">pow</span><span style="color: #000066;">&#40;</span>specular<span style="color: #000066;">,</span>materialExponenet<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		<span style="color: #000066;">&#125;</span>
&nbsp;
		ray<span style="color: #000066;">.</span><span style="color: #006600;">origin</span><span style="color: #000066;">=</span>hitpoint<span style="color: #000066;">;</span>
		ray<span style="color: #000066;">.</span><span style="color: #006600;">direction</span><span style="color: #000066;">=</span>normal<span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">float</span> tm<span style="color: #000066;">=</span><span style="color: #0000ff;">11.0</span><span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">float</span> t<span style="color: #000066;">=</span><span style="color: #0000ff;">0.1</span><span style="color: #000066;">;</span>
		<span style="color: #000066; font-weight: bold;">vec4</span> coco<span style="color: #000066;">;</span>
&nbsp;
		Render_plans<span style="color: #000066;">&#40;</span>ray<span style="color: #000066;">,</span> position<span style="color: #000066;">,</span>ob<span style="color: #000066;">,</span>coco<span style="color: #000066;">,</span> tm<span style="color: #000066;">,</span>t<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
		co<span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span>color<span style="color: #000066;">*</span><span style="color: #0000ff;">0.95</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span>coco<span style="color: #000066;">.</span><span style="color: #006600;">rgb</span><span style="color: #000066;">*</span><span style="color: #0000ff;">0.25</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
	<span style="color: #000066;">&#125;</span>
<span style="color: #000066;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #000066;">&#40;</span><span style="color: #000066;">&#41;</span> 
<span style="color: #000066;">&#123;</span>	
    <span style="color: #000066; font-weight: bold;">vec2</span> p <span style="color: #000066;">=</span> <span style="color: #000066;">-</span><span style="color: #0000ff;">1.0</span> <span style="color: #000066;">+</span> <span style="color: #0000ff;">2.0</span> <span style="color: #000066;">*</span> <span style="color: #551111;">gl_FragCoord</span><span style="color: #000066;">.</span><span style="color: #006600;">xy</span><span style="color: #000066;">/</span> resolution<span style="color: #000066;">.</span><span style="color: #006600;">xy</span><span style="color: #000066;">;</span>
&nbsp;
    ray<span style="color: #000066;">.</span><span style="color: #006600;">origin</span> <span style="color: #000066;">=</span> <span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">3.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #666666; font-style: italic;">// ray origin</span>
    ray<span style="color: #000066;">.</span><span style="color: #006600;">direction</span> <span style="color: #000066;">=</span> <span style="color: #993333; font-weight: bold;">normalize</span> <span style="color: #000066;">&#40;</span><span style="color: #000066; font-weight: bold;">vec3</span><span style="color: #000066;">&#40;</span>p<span style="color: #000066;">.</span><span style="color: #006600;">x</span><span style="color: #000066;">,</span>p<span style="color: #000066;">.</span><span style="color: #006600;">y</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">2.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">-</span>ray<span style="color: #000066;">.</span><span style="color: #006600;">origin</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #666666; font-style: italic;">// ray direction</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//plan (x,y,z,d)</span>
	fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">-</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">5.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #666666; font-style: italic;">//left</span>
	fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">5.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #666666; font-style: italic;">//right</span>
	fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">5.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #666666; font-style: italic;">//top</span>
	fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">3</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">5.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #666666; font-style: italic;">//bottom</span>
	fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">4</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">4.6</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #666666; font-style: italic;">//front</span>
	<span style="color: #666666; font-style: italic;">//aabox (x,y,z,lenght)</span>
	fpar00<span style="color: #000066;">&#91;</span><span style="color: #0000ff;">5</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">-</span><span style="color: #0000ff;">8.5</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">8.5</span><span style="color: #000066;">,-</span><span style="color: #0000ff;">8.5</span><span style="color: #000066;">,</span><span style="color: #0000ff;">16.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">vec4</span> ob<span style="color: #000066;">;</span>
	<span style="color: #000066; font-weight: bold;">vec4</span> oc<span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">vec4</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0.0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">1.0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
	<span style="color: #000066; font-weight: bold;">vec3</span> position<span style="color: #000066;">=</span>ray<span style="color: #000066;">.</span><span style="color: #006600;">origin</span><span style="color: #000066;">;</span>
	Render<span style="color: #000066;">&#40;</span>ray<span style="color: #000066;">,</span>position<span style="color: #000066;">,</span>ob<span style="color: #000066;">,</span>oc<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
	<span style="color: #551111;">gl_FragColor</span><span style="color: #000066;">=</span>oc<span style="color: #000066;">;</span>
<span style="color: #000066;">&#125;</span></pre></td></tr></table></div>

</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2012/02/metaballs-and-reflection-with-raymarching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blog.neodyme.net/wp-content/uploads/2012/02/test5-2012-02-09-16-55-51-33.f4v" length="1663836" type="video/mpeg" />
		</item>
		<item>
		<title>chapifighter</title>
		<link>http://blog.neodyme.net/index.php/2012/02/chapifighter/</link>
		<comments>http://blog.neodyme.net/index.php/2012/02/chapifighter/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 20:19:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/?p=685</guid>
		<description><![CDATA[Ho ! i just found on of my end school projet (in 1998) called &#171;&#160;chapifighter&#160;&#187;. I recompile it and it&#8217;s still running !! It is a &#171;&#160;open network wolfenstein&#160;&#187; like in java . Get the source code here]]></description>
			<content:encoded><![CDATA[<p>Ho ! i just found on of my end school projet (in 1998) called &laquo;&nbsp;chapifighter&nbsp;&raquo;.  I recompile it and it&#8217;s still running !! It is a &laquo;&nbsp;open network wolfenstein&nbsp;&raquo; like in java . Get the source code <a href="data/chapi/theproject.zip" >here</a> <img src='http://blog.neodyme.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<table>
<tr>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/chapi2.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/chapi2-300x300.jpg" alt="" title="chapi1" width="298" height="300" class="alignleft size-medium wp-image-686" /></a>
</td>
<td>
<a href="http://blog.neodyme.net/wp-content/uploads/2012/02/chapi1.jpg"><img src="http://blog.neodyme.net/wp-content/uploads/2012/02/chapi1-298x300.jpg" alt="" title="chapi1" width="298" height="300" class="alignleft size-medium wp-image-686" /></a>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2012/02/chapifighter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>another introduction to ray tracing ebook</title>
		<link>http://blog.neodyme.net/index.php/2011/03/another-introduction-to-ray-tracing-ebook/</link>
		<comments>http://blog.neodyme.net/index.php/2011/03/another-introduction-to-ray-tracing-ebook/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 16:46:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/index.php/2011/03/another-introduction-to-ray-tracing-ebook/</guid>
		<description><![CDATA[http://www.realtimerendering.com/blog/another-introduction-to-ray-tracing/]]></description>
			<content:encoded><![CDATA[<p>http://www.realtimerendering.com/blog/another-introduction-to-ray-tracing/</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2011/03/another-introduction-to-ray-tracing-ebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RGB to Spectrum for reflectances</title>
		<link>http://blog.neodyme.net/index.php/2011/03/rgb-to-spectrum-for-reflectances/</link>
		<comments>http://blog.neodyme.net/index.php/2011/03/rgb-to-spectrum-for-reflectances/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 01:10:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/?p=622</guid>
		<description><![CDATA[RGB to spectrum methode from Brian Smits. http://www.cs.utah.edu/~bes/papers/color/ Download paper here]]></description>
			<content:encoded><![CDATA[<p>RGB to spectrum methode from Brian Smits.</p>
<p>http://www.cs.utah.edu/~bes/papers/color/</p>
<p><a href='http://blog.neodyme.net/wp-content/uploads/2011/03/paper.pdf'>Download paper here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2011/03/rgb-to-spectrum-for-reflectances/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best IES Viewer</title>
		<link>http://blog.neodyme.net/index.php/2011/03/best-ies-viewer/</link>
		<comments>http://blog.neodyme.net/index.php/2011/03/best-ies-viewer/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 05:14:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/?p=620</guid>
		<description><![CDATA[Here the best IES viewer for the best choice. http://www.photometricviewer.com/]]></description>
			<content:encoded><![CDATA[<p>Here the best IES viewer for the best choice.<br />
<br/><br />
<a href="http://www.photometricviewer.com/">http://www.photometricviewer.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2011/03/best-ies-viewer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Need to remove all .svn directories ??</title>
		<link>http://blog.neodyme.net/index.php/2011/03/need-to-remove-all-svn-directories/</link>
		<comments>http://blog.neodyme.net/index.php/2011/03/need-to-remove-all-svn-directories/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 01:15:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/?p=616</guid>
		<description><![CDATA[Some times you need to remove all .svn directories in all sub folders. It is very very slow using explorer. I found this simple shell extension. Just import this in registry editor and use right menu on your folder to remove all .svn directories. Download]]></description>
			<content:encoded><![CDATA[<p>Some times you need to remove all .svn directories in all sub folders. It is very very slow using explorer. I found this simple shell extension.<br />
Just import this in registry editor and use right menu on your folder to remove all .svn directories.<br />
<br/><br />
<a href='http://blog.neodyme.net/wp-content/uploads/2011/03/svn.zip'>Download</a><br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2011/03/need-to-remove-all-svn-directories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>using Microsoft kinect on pc  !! openkinect</title>
		<link>http://blog.neodyme.net/index.php/2010/12/using-microsoft-kinect-on-pc-openkinect/</link>
		<comments>http://blog.neodyme.net/index.php/2010/12/using-microsoft-kinect-on-pc-openkinect/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 04:30:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/?p=608</guid>
		<description><![CDATA[http://openkinect.org/wiki/Main_Page]]></description>
			<content:encoded><![CDATA[<p><a href="http://openkinect.org/wiki/Main_Page">http://openkinect.org/wiki/Main_Page</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2010/12/using-microsoft-kinect-on-pc-openkinect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elastic: A visual theme editor and theme engine for WordPress.</title>
		<link>http://blog.neodyme.net/index.php/2010/12/elastic-a-visual-theme-editor-and-theme-engine-for-wordpress/</link>
		<comments>http://blog.neodyme.net/index.php/2010/12/elastic-a-visual-theme-editor-and-theme-engine-for-wordpress/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 23:34:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.neodyme.net/index.php/2010/12/elastic-a-visual-theme-editor-and-theme-engine-for-wordpress/</guid>
		<description><![CDATA[http://elastictheme.org/]]></description>
			<content:encoded><![CDATA[<p>http://elastictheme.org/</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neodyme.net/index.php/2010/12/elastic-a-visual-theme-editor-and-theme-engine-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

