[X3D-Public] Shader programming and URLs in X3D

Peter Eschler peschler at googlemail.com
Thu May 14 08:21:25 PDT 2009


Hi,

On Thu, May 14, 2009 at 4:53 PM, John A. Stewart <alex.stewart at crc.ca> wrote:
> Michalis;
>
> I'm going to suggest that "shader:" be placed in the front of any text
> string for shader source.

I would suggest to stick to existing standards like the data url protocol:
http://www.ietf.org/rfc/rfc2397.txt
http://en.wikipedia.org/wiki/Data_URI_scheme

That is:
<ShaderPart type='VERTEX'><![CDATA[data:text/plain,

  void main(void)
  {
   gl_Position = ftransform();
  }
 ]]>
</ShaderPart>

The MIME-type is already given by the spec:
http://www.web3d.org/x3d/specifications/ISO-IEC-19775-1.2-X3D-AbstractSpecification/index.html
"Shader source files shall be plain text encoded as specified for MIME
type text/plain and interpreted according to the containing node's
language definition."

There's an optional encoding after the mimetype of a data url, but
that's not used in the example above.

Best regards,
Peter Eschler

> It is ambiguous to have a url that can be either a file name, or text; and
> the precedent for this action is already there with scripting text.
>
> I understand from talking to Alan Hudson that Xj3D does not support the
> Shader Component; I think Octaga does (this is cc'd to Espen at Octaga), as
> does BitManagement.  Espen, Peter; any comment?
>
> On 14-May-09, at 6:49 AM, Michalis Kamburelis wrote:
>
>> John A. Stewart wrote:
>>>
>>> Hi All;
>>>
>>> I'm verifying the Shader support code in FreeWRL, and I have a question.
>>>
>>> The url field, can it contain the source, or does it always have to
>>> designate a file? eg, with scripting, one can have a url starting with
>>> "javascript ..." and it will be treated as source, not as a url.
>>>
>>
>> As far as I know, url fields of shader nodes (like ShaderPart) must
>> always point to some external resource. So, yes, url field of shaders is
>> indeed more limited in this regard that e.g. Script.url.
>>
>> One exception is that in XML encoding, you can use CDATA to put actual
>> shader source in the file. That is, you can write
>>
>> <ShaderPart type='VERTEX'><![CDATA[
>>  void main(void)
>>  {
>>   gl_Position = ftransform();
>>  }
>>  ]]>
>> </ShaderPart>
>>
>> This is unfortunately specific to XML encoding, there's no way to do
>> this in classic encoding.
>>
>> At least that's what I know, based on reading X3D spec, and that's how
>> it's implemented in view3dscene.
>>
>> Now, I'm all after improving this part of spec. Maybe we can all agree
>> that e.g. special protocol name "shader:" or "source:" could be used to
>> indicate that actual shader source code follows (just like "javascript:"
>> for Script nodes; protocol names like "glsl:" or "cg:" seem more
>> logical, but that would be redundant, as "type" field already specifies
>> the language). I can implement such protocol in 5 mins in view3dscene,
>> if everyone thinks it's a good idea and other browsers will follow :)
>> The spec could be adjusted for this in the next version.
>
> -----------------------------------------------------------
> John A. Stewart
> Team Leader: Networked Virtual Reality
> alex.stewart at crc.ca
>
> Network Systems and Technologies -
>        Systemes et technologies des reseaux
> Communications Research Centre Canada  |
>         Centre de recherches sur les communications Canada
>
> 3701 Carling Ave.  |  3701, avenue Carling
> PO Box 11490, Station H  |  CP 11490, succursale H
>         Ottawa ON K2H 8S2   |  Ottawa (Ontario) K2H 8S2
>
> http://www.crc.ca
>
>
>
>
>
>



-- 
Dipl.-Inform. (FH) Peter Eschler
NewMediaYuppies GmbH
Kreativagentur für Neue Kommunikation
Hochstrasse 17, 60313 Frankfurt am Main
E-Mail: p.eschler at newmediayuppies.com
T  +49 (0) 69 - 150 44 88 60
F  +49 (0) 69 - 150 44 88 61
M +49 (0) 173 - 326 45 34
www.newmediayuppies.com



More information about the X3D-Public mailing list