<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.delphigl.com/index.php?action=history&amp;feed=atom&amp;title=shader_phong_per_pixel%28ARB%29</id>
		<title>shader phong per pixel(ARB) - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.delphigl.com/index.php?action=history&amp;feed=atom&amp;title=shader_phong_per_pixel%28ARB%29"/>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_phong_per_pixel(ARB)&amp;action=history"/>
		<updated>2026-04-29T22:12:22Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in DGL Wiki</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_phong_per_pixel(ARB)&amp;diff=23277&amp;oldid=prev</id>
		<title>Dj3hut1: falsche überschrift beseitigt</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_phong_per_pixel(ARB)&amp;diff=23277&amp;oldid=prev"/>
				<updated>2009-04-18T14:32:36Z</updated>
		
		<summary type="html">&lt;p&gt;falsche überschrift beseitigt&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='de'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 18. April 2009, 14:32 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Texturing&lt;/del&gt;=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Per-Pixel-Lighting&lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Zurück zur [[Shadersammlung]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Zurück zur [[Shadersammlung]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{|{{Prettytable_B1}} width=100%&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{|{{Prettytable_B1}} width=100%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dj3hut1</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_phong_per_pixel(ARB)&amp;diff=23273&amp;oldid=prev</id>
		<title>Dj3hut1: Neuerstellung ARB-Shader für Phong-Beleuchtung ( per pixel )</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_phong_per_pixel(ARB)&amp;diff=23273&amp;oldid=prev"/>
				<updated>2009-04-18T12:36:18Z</updated>
		
		<summary type="html">&lt;p&gt;Neuerstellung ARB-Shader für Phong-Beleuchtung ( per pixel )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Texturing=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Per-Pixel-Beleuchtung mit einem ARB-Shader.&lt;br /&gt;
|dj3hut1&lt;br /&gt;
|1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:Phong_arb.png|framed|Utah-Teapot mit Per-Pixel-Beleuchtung.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader berechnet eine standardmässige Beleuchtung in einem Fragment-Shader ( [[Phong-Beleuchtung]] ) und berücksichtigt zusätzlich noch [[glLight | Attenuation]]-Faktoren.&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Für die Shader werden nur die Erweiterungen [[GL_ARB_fragment_program]] und [[GL_ARB_vertex_program]] benötigt.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertexprogramm&lt;br /&gt;
=== phong.vp ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;!!ARBvp1.0&lt;br /&gt;
&lt;br /&gt;
ATTRIB iV = vertex.position;&lt;br /&gt;
ATTRIB iN = vertex.normal;&lt;br /&gt;
&lt;br /&gt;
OUTPUT oPos = result.position;&lt;br /&gt;
OUTPUT oV = result.texcoord[0];&lt;br /&gt;
OUTPUT oN = result.texcoord[1];&lt;br /&gt;
&lt;br /&gt;
PARAM mvp[4] = { state.matrix.mvp };&lt;br /&gt;
PARAM mv[4] = { state.matrix.modelview };&lt;br /&gt;
PARAM mvinv[4] = { state.matrix.modelview.invtrans };&lt;br /&gt;
&lt;br /&gt;
TEMP N;&lt;br /&gt;
&lt;br /&gt;
# transform vertex with mvp&lt;br /&gt;
DP4 oPos.x, iV, mvp[0];&lt;br /&gt;
DP4 oPos.y, iV, mvp[1];&lt;br /&gt;
DP4 oPos.z, iV, mvp[2];&lt;br /&gt;
DP4 oPos.w, iV, mvp[3];&lt;br /&gt;
&lt;br /&gt;
# transform vertex with mv&lt;br /&gt;
DP4 oV.x, iV, mv[0];&lt;br /&gt;
DP4 oV.y, iV, mv[1];&lt;br /&gt;
DP4 oV.z, iV, mv[2];&lt;br /&gt;
DP4 oV.w, iV, mv[3];&lt;br /&gt;
&lt;br /&gt;
# transform the normal to eye coordinates.&lt;br /&gt;
DP3 N.x, mvinv[0], iN;&lt;br /&gt;
DP3 N.y, mvinv[1], iN;&lt;br /&gt;
DP3 N.z, mvinv[2], iN;&lt;br /&gt;
&lt;br /&gt;
# normalize&lt;br /&gt;
DP3 N.w, N, N;&lt;br /&gt;
RSQ N.w, N.w;&lt;br /&gt;
MUL oN, N, N.w;&lt;br /&gt;
&lt;br /&gt;
END&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragmentprogramm&lt;br /&gt;
=== phong.fp ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;!!ARBfp1.0&lt;br /&gt;
&lt;br /&gt;
ATTRIB iPos = fragment.position;&lt;br /&gt;
ATTRIB iV = fragment.texcoord[0];&lt;br /&gt;
ATTRIB iN = fragment.texcoord[1];&lt;br /&gt;
&lt;br /&gt;
OUTPUT oCol = result.color;&lt;br /&gt;
&lt;br /&gt;
TEMP LC, L, E, R, rN, amb, diff, spec, col, attenuation, d, d2;&lt;br /&gt;
&lt;br /&gt;
# L - V&lt;br /&gt;
SUB L, state.light[0].position, iV;&lt;br /&gt;
&lt;br /&gt;
# attenuation &lt;br /&gt;
DP3 d, L, L;&lt;br /&gt;
RSQ d2, d.x;&lt;br /&gt;
DST d, d, d2;&lt;br /&gt;
DP3 attenuation, state.light[0].attenuation, d;&lt;br /&gt;
RCP attenuation, attenuation.x;&lt;br /&gt;
&lt;br /&gt;
# normalize L&lt;br /&gt;
DP3 L.w, L, L;&lt;br /&gt;
RSQ L.w, L.w;&lt;br /&gt;
MUL L, L, L.w;&lt;br /&gt;
&lt;br /&gt;
# E eye vector&lt;br /&gt;
SUB E, 0, iV;&lt;br /&gt;
&lt;br /&gt;
# normalize E&lt;br /&gt;
DP3 E.w, E, E;&lt;br /&gt;
RSQ E.w, E.w;&lt;br /&gt;
MUL E, E, E.w;&lt;br /&gt;
&lt;br /&gt;
# nDotLN&lt;br /&gt;
DP3 LC.x, iN, L;&lt;br /&gt;
&lt;br /&gt;
# R reflectance ( L - 2 * nDotLN * N )&lt;br /&gt;
MUL rN, iN, LC.x;&lt;br /&gt;
MUL rN, rN, 2.0;&lt;br /&gt;
SUB R, L, rN;&lt;br /&gt;
&lt;br /&gt;
# normalize R&lt;br /&gt;
DP3 R.w, R, R;&lt;br /&gt;
RSQ R.w, R.w;&lt;br /&gt;
MUL R, R, R.w;&lt;br /&gt;
&lt;br /&gt;
# -R&lt;br /&gt;
SUB R, 0, R;&lt;br /&gt;
&lt;br /&gt;
# nDotER&lt;br /&gt;
DP3 LC.y, E, R;&lt;br /&gt;
&lt;br /&gt;
# shininess&lt;br /&gt;
MOV LC.w, state.material.shininess.x;&lt;br /&gt;
&lt;br /&gt;
# light coefficents&lt;br /&gt;
LIT LC, LC;&lt;br /&gt;
&lt;br /&gt;
# ambient&lt;br /&gt;
MUL amb, state.lightprod[0].ambient, LC.x;&lt;br /&gt;
MUL amb, amb, attenuation;&lt;br /&gt;
&lt;br /&gt;
# diffuse&lt;br /&gt;
MUL diff, state.lightprod[0].diffuse, LC.y;&lt;br /&gt;
MUL diff, diff, attenuation;&lt;br /&gt;
&lt;br /&gt;
# specular&lt;br /&gt;
MUL spec, state.lightprod[0].specular, LC.z;&lt;br /&gt;
MUL spec, spec, attenuation;&lt;br /&gt;
&lt;br /&gt;
# result color&lt;br /&gt;
ADD col, state.lightmodel.scenecolor, amb;&lt;br /&gt;
ADD col, col, diff;&lt;br /&gt;
#MUL col, col, iN;&lt;br /&gt;
ADD oCol, col, spec;&lt;br /&gt;
&lt;br /&gt;
END&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dj3hut1</name></author>	</entry>

	</feed>