Semantics in CG language
来源:互联网 发布:五五开淘宝店地址 编辑:程序博客网 时间:2024/05/01 15:16
2) making textures take a specific unit:Units are TEXUNIT0... TEXUNIT15uniform texture2D myTex : TEXUNIT7;uniform textureRect myRect : TEXUNIT3; 3) binding semantics for Uniform data:uniform vec4 data1 : C0;uniform vec3 data2 : register(c1);uniform vec4 data3 : C2;Constants are c0...c2554) binding semantics for attribute Input:attribute vec4 myAtt : ATTR7;POSITION, ATTR0Input Vertex, Generic Attribute 0BLENDWEIGHT, ATTR1Input vertex weight, Generic Attribute 1NORMAL, ATTR2Input normal, Generic Attribute 2COLOR0, DIFFUSE, ATTR3Input primary color, Generic Attribute 3COLOR1, SPECULAR, ATTR4Input secondary color, Generic Attribute 4TESSFACTOR, FOGCOORD,ATTR5Input fog coordinate, Generic Attribute 5PSIZE, ATTR6Input point size, Generic Attribute 6BLENDINDICES, ATTR7Generic Attribute 7TEXCOORD0-TEXCOORD7,ATTR8-ATTR15Input texture coordinates (texcoord0-texcoord7), Generic Attributes 8–15TANGENT, ATTR14Generic Attribute 14BINORMAL, ATTR15Generic Attribute 155) binding semantics for varying Output/Input:varying vec4 myVar1 : TEX0;POSITION, HPOSOutput positionPSIZE, PSIZOutput point sizeFOG, FOGCOutput fog coordinateCOLOR0, COL0Output primary colorCOLOR1, COL1Output secondary colorBCOL0Output backface primary colorBCOL1Output backface secondary colorTEXCOORD0-TEXCOORD7,TEX0-TEX7Output texture coordinatesCLP0-CL5Output Clip distances
For instance, in my glsl code, that I will compile with cgc.exe, if I want one of my textures to be exactly using unit 7, just specify:
uniform texture2D myTex : TEXUNIT7;
It is very useful, as I can skip setting-up some special textures again and again (env cubemap, global noise texture, etc). Also, it's vital when I develop shaders, that I will be compiling and passing them as ARB (asm) shaders, because if I don't use some varying in both the vtx-shader and frag-shader, their order is messed-up. For instance, if I have 3 varyings: "v1,v2,v3", and I don't use v1 in the frag-shader, then the data I expect in v2 will be actually in v3. Once I specify which registers to be used, I can be sure my data will be properly passed. Also, I can know the address of uniforms easily :).
I use ARB shaders, because I don't want to recompile 500 shaders at runtime and I don't want to make it easy for the driver to decide to recompile shaders if I set some uniform to "0.0f".
http://developer.nvidia.com/object/using_sas.html
List of Common SemanticsHardware SemanticsRegister Names in vertex buffers and vertex-output connections
COLOR0
COLOR1
TEXCOORD0
TEXCOORD1
TEXCOORD2
TEXCOORD3
TEXCOORD4
TEXCOORD5
TEXCOORD6
TEXCOORD7
TEXCOORD8 (synonym for COLOR0)
TEXCOORD9 (synonym for COLOR1)
ATTR0 (synonym for TEXCOORD0 sometimes seen in Cg)
ATTR1 (synonym for TEXCOORD1)
ATTR2 (synonym for TEXCOORD2)
ATTR3 (synonym for TEXCOORD3)
ATTR4 (synonym for TEXCOORD4)
ATTR5 (synonym for TEXCOORD5)
ATTR6 (synonym for TEXCOORD6)
ATTR7 (synonym for TEXCOORD7)
register(hardware_register_specifier)
POSITION
NORMAL
NORMAL0
TANGENT
TANGENT0
BINORMAL
BINORMAL0
Particle Size and Polygon Facing Flag Inputs for Pixel ShadersPSIZE
FACE (OpenGL equivalent to VFACE)
VFACE (DirectX equivalent to FACE)
Pixel Shader Output ValuesCOLOR (synonym for COLOR0)
COLOR0
COLOR1
COLOR2
COLOR3
Standard Software SemanticsCommon Material and Light Characteristics
POSITION
DIRECTION
DIFFUSE
SPECULAR
AMBIENT
POWER
SPECULARPOWER
CONSTANTATTENUATION
LINEARATTENUATION
QUADRATICATTENUATION
FALLOFFANGLE
FALLOFFEXPONENT
EMISSION
EMISSIVE
OPACITY
REFRACTION
Texture-RelatedRENDERDEPTHSTENCILTARGET
RENDERCOLORTARGET
VIEWPORTPIXELSIZE
DIFFUSEMAP
SPECULARMAP
NORMAL
ENVIRONMENT
ENVMAP
ENVIRONMENTNORMAL
Transforms & LocationsWORLD
VIEW
PROJECTION
WORLDVIEW
VIEW PROJECTION
WORLDVIEWPROJECTION
WORLDINVERSE
VIEWINVERSE
PROJECTIONINVERSE
WORLDVIEWINVERSE
VIEW PROJECTIONINVERSE
WORLDVIEWPROJECTIONINVERSE
WORLDTRANSPOSE
VIEWTRANSPOSE
PROJECTIONTRANSPOSE
WORLDVIEWTRANSPOSE
VIEW PROJECTIONTRANSPOSE
WORLDVIEWPROJECTIONTRANSPOSE
WORLDINVERSETRANSPOSE
VIEWINVERSETRANSPOSE
PROJECTIONINVERSETRANSPOSE
WORLDVIEWINVERSETRANSPOSE
VIEW PROJECTIONINVERSETRANSPOSE
WORLDVIEWPROJECTIONINVERSETRANSPOSE
TRANSFORM
LIGHTPOSITION
OthersSTANDARDSGLOBAL
HEIGHT
UNITSSCALE
FXComposer Specific SemanticsResetting ViewsFXCOMPOSER_RESETPULSE
Mouse InteractionsMOUSEPOSITION
LEFTMOUSEDOWN
RIGHTMOUSEDOWN
TimingTIME
ELAPSEDTIME
Other Semantics Sometimes EncounteredSI_EYEPOS (use VIEWINVERSE instead)
WORLD_CAMERA_POSITION (likewise)
COS_TIME (just call cos())
If you encounter any new semantics, please send them to us on the NVIDIA forums: http://developer.nvidia.com/forums/
至于用途什么的就不解释了,用过Ogre脚本的人应该对这种方式很熟悉了吧,呵呵。
- Semantics in CG language
- Operational Semantics in Programing Language (编程语言的操作语义)
- shading language 和 CG 概述
- Cg in Two Pages
- cg编程之 Shader Language原理
- Cg Shading Language 的内置函数表
- Dynamic in C# VII: Phantom Method Semantics
- Where are semantics in semantic web
- Reflection Using Cg in OpenGL
- Refraction Using Cg In OpenGL
- Why Homogeneous Matrix in CG?
- Cg shading in world space
- interview in C language
- strassen in c language.
- shading Language glsl cg 3d程序员的黑话
- 着色语言(Shader Language),以及 HLSL GLSL CG
- 着色语言(Shader Language) HLSL/GLSL/CG
- 警告:“semantics of '>' change in ANSIC”的意思
- No. 05 - The Least k Numbers
- 初学者对通讯录软件开发的整体把握与分块实现------添加列表新内容并实现界面的跳转
- No. 06 - Post-order Traversal Sequences of Binary Search Trees
- No. 07 - Reverse words in a sentence
- No. 08 - Calculate 1+2+…+n
- Semantics in CG language
- 2012-7-12 周五 总结
- No. 09 - Numbers with a Given Sum
- No. 10 - K-th Node from End
- No. 11 - Print Binary Trees from Top to Bottom
- [开源] 本blog的开源项目
- 长方体类
- 2012.7.13总结
- No. 12 - Mirror of Binary Trees