<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
 now my secret identity is known. my vigilante days are numbered! <div><br class="webkit-block-placeholder"></div><div>:)</div><div><br class="webkit-block-placeholder"></div><div>Here is a sample fragment shader that implements one of the blend modes (overlay) for A/B mixing. If you can show me how to get this working in a patch that has two texture inputs for one rect object at the end of a gemhead render chain, that would really  be awesome, and I could wrap it easily in an abstraction.</div><div><br class="webkit-block-placeholder"></div><div>Thanks for taking the time to look at it. Yeah, I know, weird Jitter texcoord template, deal with it :)</div><div><br class="webkit-block-placeholder"></div><div>---- fragment shader</div><div><div>uniform vec4 amount;</div><div><br class="webkit-block-placeholder"></div><div>// define our rectangular texture samplers </div><div>uniform sampler2DRect tex0;</div><div>uniform sampler2DRect tex1;</div><div><br class="webkit-block-placeholder"></div><div>// define our varying texture coordinates </div><div>varying vec2 texcoord0;</div><div>varying vec2 texcoord1;</div><div><br class="webkit-block-placeholder"></div><div>vec4 one = vec4(1.0);<span class="Apple-tab-span" style="white-space:pre">        </span></div><div>vec4 two = vec4(2.0);</div><div>vec4 lumcoeff = vec4(0.2125,0.7154,0.0721,0.0);</div><div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>vec4 overlay(vec4 myInput, vec4 previousmix, vec4 amount)</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>float luminance = dot(previousmix,lumcoeff);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>float mixamount = clamp((luminance - 0.45) * 10., 0., 1.);</div><div><br class="webkit-block-placeholder"></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 branch1 = two * previousmix * myInput;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 branch2 = one - (two * (one - previousmix) * (one - myInput));</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 result = mix(branch1, branch2, vec4(mixamount) );</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 mixresult = mix(previousmix, result, amount);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return mixresult;</div><div>}</div><div><br class="webkit-block-placeholder"></div><div>void main(void) </div><div>{<span class="Apple-tab-span" style="white-space:pre">                </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 input0 = texture2DRect(tex0, texcoord0);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 input1 = texture2DRect(tex1, texcoord1);<span class="Apple-tab-span" style="white-space:pre">        </span></div><div><br class="webkit-block-placeholder"></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 mix1 = overlay(input1, input0, amount* two );</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 mix2 = overlay(input0, input1, (1.0 - amount) * two );</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>vec4 result = mix(vec4(mix1.rgb,1.),vec4(mix2.rgb,1), amount);</div><div><br class="webkit-block-placeholder"></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>gl_FragColor = result;</div><div>} </div><br class="webkit-block-placeholder"></div><div>---- vert shader</div><div><div><br class="webkit-block-placeholder"></div><div>varying vec2 texcoord0;</div><div>varying vec2 texcoord1;</div><div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>void main()</div><div>{</div><div>    // perform standard transform on vertex</div><div>    gl_Position = ftransform();</div><div><br class="webkit-block-placeholder"></div><div>    // transform texcoords</div><div>    texcoord0 = vec2(gl_TextureMatrix[0] * gl_MultiTexCoord0);</div><div>    texcoord1 = vec2(gl_TextureMatrix[1] * gl_MultiTexCoord1);</div><div>}</div></div><div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div><br><div><div>On Jul 1, 2007, at 11:47 AM, chris clepper wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Anton</div> <div> </div> <div>You want to set the texture unit that pix_texture uses correct?  pix_texture should take a 'texunit $1' (or texUnit) message to do this.  Multitexturing was one of Jamie's projects which remains unfinished... </div> <div> </div> <div>Send me a shader to work with if you can't get it working.<br><br> </div> <div><span class="gmail_quote">On 6/29/07, <b class="gmail_sendername">vade</b> &lt;<a href="mailto:doktorp@mac.com">doktorp@mac.com</a>&gt; wrote:</span> <blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"> <div style="WORD-WRAP: break-word">Hello <div><br> </div> <div>i am looking for an example patch, or how to for multitexturing. Im trying to port some GLSL shaders that implement mixers over to GEM. How do I get gl_TextureMatrix[0] and [1], etc so to speak onto a rect?</div> <div><br> </div> <div>thanks, forgive me if this is obvious, but I looked around and did not see any example code.<br><br> <div><span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; border-spacing: 0px 0px"> <div style="MARGIN: 0px"><font color="#b51c1c" size="2"><span style="FONT-SIZE: 10px; COLOR: rgb(181,28,28)"><b style="FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: rgb(181,28,28)"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: rgb(181,28,28)"> v a d e //</span></b></span></font></div> <div style="FONT-SIZE: 10px; MIN-HEIGHT: 12px; MARGIN: 0px"><font color="#7f7f7f"><br style="FONT-SIZE: 10px; COLOR: rgb(127,127,127)"></font></div> <div style="MARGIN: 0px"><font color="#7f7f7f" size="2"><span style="FONT-SIZE: 10px; COLOR: rgb(127,127,127)"><b style="FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: rgb(127,127,127)"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: rgb(127,127,127)"> <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.vade.info/" target="_blank">www.vade.info</a></span></b></span></font></div> <div style="MARGIN: 0px"><font color="#7f7f7f" size="2"><span style="FONT-SIZE: 10px; COLOR: rgb(127,127,127)"><b style="FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: rgb(127,127,127)"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: rgb(127,127,127)"> <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://abstrakt.vade.info/" target="_blank">abstrakt.vade.info</a></span></b></span></font></div> <div style="MARGIN: 0px"><br> </div><br></span></div><br> </div></div><br>_______________________________________________<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:PD-list@iem.at">PD-list@iem.at </a> mailing list<br>UNSUBSCRIBE and account-management -&gt; <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://lists.puredata.info/listinfo/pd-list" target="_blank">http://lists.puredata.info/listinfo/pd-list </a><br><br></blockquote></div><br></blockquote></div><br><div> <span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font class="Apple-style-span" color="#B51C1C" size="2"><span class="Apple-style-span" style="font-size: 10px;; color: rgb(181, 28, 28); "><b style="color: rgb(181, 28, 28); font-size: 10px; font-weight: bold; "><span class="Apple-style-span" style="color: rgb(181, 28, 28); font-size: 10px; font-weight: bold; ">v a d e //</span></b></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Helvetica; min-height: 12px; ; font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F"><br style="color: rgb(127, 127, 127); font-size: 10px; "></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font class="Apple-style-span" color="#7F7F7F" size="2"><span class="Apple-style-span" style="font-size: 10px;; color: rgb(127, 127, 127); "><b style="color: rgb(127, 127, 127); font-size: 10px; font-weight: bold; "><span class="Apple-style-span" style="color: rgb(127, 127, 127); font-size: 10px; font-weight: bold; ">www.vade.info</span></b></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font class="Apple-style-span" color="#7F7F7F" size="2"><span class="Apple-style-span" style="font-size: 10px;; color: rgb(127, 127, 127); "><b style="color: rgb(127, 127, 127); font-size: 10px; font-weight: bold; "><span class="Apple-style-span" style="color: rgb(127, 127, 127); font-size: 10px; font-weight: bold; ">abstrakt.vade.info</span></b></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><br class="khtml-block-placeholder"></div><br class="Apple-interchange-newline"></span> </div><br></div></body></html>