Semantics in CG language


I use them to specify the hardware registers to be used. Here's a bit docs that I copied from the cg reference pdf into a neat table, putting it in a header, to look it up easily. 

2) making textures take a specific unit:
	Units are TEXUNIT0... TEXUNIT15
	uniform 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...c255

4) binding semantics for attribute Input:
	attribute vec4 myAtt : ATTR7;

	POSITION, ATTR0				Input Vertex, Generic Attribute 0
	BLENDWEIGHT, ATTR1			Input vertex weight, Generic Attribute 1
	NORMAL, ATTR2				Input normal, Generic Attribute 2
	COLOR0, DIFFUSE, ATTR3		Input primary color, Generic Attribute 3
	COLOR1, SPECULAR, ATTR4		Input secondary color, Generic Attribute 4
	TESSFACTOR, FOGCOORD,ATTR5	Input fog coordinate, Generic Attribute 5
	PSIZE, ATTR6				Input point size, Generic Attribute 6
	BLENDINDICES, ATTR7			Generic Attribute 7
	TEXCOORD0-TEXCOORD7,
			ATTR8-ATTR15		Input texture coordinates (texcoord0-	texcoord7), Generic Attributes 8–15
	TANGENT, ATTR14				Generic Attribute 14
	BINORMAL, ATTR15			Generic Attribute 15

5) binding semantics for varying Output/Input:
	varying vec4 myVar1 : TEX0;

	POSITION, HPOS		Output position
	PSIZE, PSIZ			Output point size
	FOG, FOGC			Output fog coordinate
	COLOR0, COL0		Output primary color
	COLOR1, COL1		Output secondary color
	BCOL0				Output backface primary color
	BCOL1				Output backface secondary color
	TEXCOORD0-TEXCOORD7,
	TEX0-TEX7			Output texture coordinates
	CLP0-CL5			Output 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". 
Fx Composer预定义的注释和语意        
在FX Composer的文档里面翻了好久都找不到WorldViewProjection以及其它类似的东西在哪,或者说其它类似的语意都在什么地方。后来终于发现一个地方有介绍了,只不过貌似并未收录到FX的文档里面。
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 Shaders

PSIZE

FACE (OpenGL equivalent to VFACE)

VFACE (DirectX equivalent to FACE)

Pixel Shader Output Values

COLOR (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-Related

RENDERDEPTHSTENCILTARGET

RENDERCOLORTARGET

VIEWPORTPIXELSIZE

DIFFUSEMAP

SPECULARMAP

NORMAL

ENVIRONMENT

ENVMAP

ENVIRONMENTNORMAL

Transforms & Locations

WORLD

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

Others

STANDARDSGLOBAL

HEIGHT

UNITSSCALE

FXComposer Specific SemanticsResetting Views

FXCOMPOSER_RESETPULSE

Mouse Interactions

MOUSEPOSITION

LEFTMOUSEDOWN

RIGHTMOUSEDOWN

Timing

TIME

ELAPSEDTIME

Other Semantics Sometimes Encountered

SI_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脚本的人应该对这种方式很熟悉了吧,呵呵。


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值