游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2923|回复: 8

我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不知道

[复制链接]

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2006-10-30 15:17:00 | 显示全部楼层 |阅读模式
RT.
CG 是NVIDIA的。是不是有些东西对NVIDIA的显卡支持比较好?对其他类型的显卡就是标准支持?

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-10-30 15:23:00 | 显示全部楼层

Re:我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不知

我看到 他有什么 NV_。。的配置,扩展。我想在ATI的卡上就没什么针对性的选项了.不过也算了,反正好象ATI的硬件特性都是标准的。。。

27

主题

418

帖子

455

积分

中级会员

Rank: 3Rank: 3

积分
455
QQ
发表于 2006-10-30 15:39:00 | 显示全部楼层

Re:我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不知

只要不使用针对NV的函数,应该没问题

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-10-30 16:53:00 | 显示全部楼层

Re:我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不知

是这样啦。看了一下,谁都是对自己的孩子好啊。NVIDIA对自己的显卡支持比较好。NV2X ,NV3X.什么的。

还有一个问题:
就是CG对固定管道支持怎么样?是不是我不用SHADER只设置状态就好了?
好像FX支持固定管道。

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-10-30 17:09:00 | 显示全部楼层

Re:我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不知

我看了几个例子好像里面没有FX文件那种
设置状态的东西
ztest=
zcull=
如果没有这些东西有CG也没用。我就是因为封装状态太麻烦100多个,20多种。才想用CG的。
看看FX文件怎么搞的

15

主题

155

帖子

157

积分

注册会员

Rank: 2

积分
157
发表于 2006-10-30 22:44:00 | 显示全部楼层

Re: 我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不

shader也可以用固定管线,
PixelShader=0;
VertexShader=0;
我这dx中使用过.openGl大概也可以.
下面是Nebula2的例子
technique t0
{
    pass p0
    {
                WorldTransform[0]   = <mWorld>;
                ViewTransform       = <mView>;
                ProjectionTransform = <mProjection>;
                TextureTransform[0] = <mTextureTransform0>;

                ColorWriteEnable    = RED|GREEN|BLUE|ALPHA;
                NormalizeNormals    = True;
                ZEnable             = True;
                ZFunc               = LessEqual;
                StencilEnable       = False;
                DepthBias           = 0.0f;
                PixelShader         = 0;
                SpecularEnable                = False;

                Ambient          = {0.8, 0.8, 0.8, 1.0f};
                LightEnable[0]   = True;
                LightAmbient[0]  = {1.0, 1.0, 1.0, 1.0f};
                LightDiffuse[0]  = {1.0, 1.0, 1.0, 1.0f};
                LightSpecular[0] = {1.0, 1.0, 1.0, 1.0f};
                LightPosition[0] = {0.0, 0.0, 0.0};
                LightRange[0]    = 500000.0;
                LightAttenuation0[0] = 1.0;
                LightAttenuation1[0] = 0.0;
                LightAttenuation2[0] = 0.0;

                // LightType must be the last light state that is set!
                LightType[0] = POINT;

                ZWriteEnable     = False;
                AlphaBlendEnable = True;
                AlphaTestEnable  = False;
                Lighting         = True;
                VertexShader     = 0;
                FogEnable        = False;

                CullMode         = None;
                SrcBlend         = SrcAlpha;
                DestBlend        = InvSrcAlpha;
                MaterialAmbient         = <MatDiffuse>;
                MaterialDiffuse  = <MatDiffuse>;
                MaterialSpecular = { 0.0, 0.0, 0.0, 0.0 };

                FVF = XYZ | NORMAL | TEX1;

                Texture[0] = <MeshTexture>;
                TexCoordIndex[0] = 0;
                TextureTransformFlags[0] = Count2;        //2d texture

                ColorOp[0]   = Modulate;
                ColorOp[1]   = Disable;
                ColorArg0[0] = Diffuse;
                ColorArg1[0] = Texture;

                AlphaOp[0]   = SelectArg1;
                AlphaOp[1]         = Disable;
                AlphaArg0[0] = Diffuse;
                AlphaArg1[0] = Texture;

        //FillMode   = Wireframe;
        MinFilter[0]        = LINEAR;
        MagFilter[0]        = LINEAR;
        MipFilter[0]        = LINEAR;
    }
}

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-10-31 09:36:00 | 显示全部楼层

Re:我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不知

fx是支持固定管道啊。Nebula2我知道。
CGFX就支持。看来还是用CGFX好。我又尝试了一下就自己封装,最后还是觉得用别人的好。

“CgFX is an extended file format for Cg. In addition to Cg programs, CgFX
files can also represent both fixed?function graphics state and metainformation
about shader parameters.”

5

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
发表于 2006-11-1 10:13:00 | 显示全部楼层

Re:我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不知

啊?什么叫支持固定管道……?
用了Shader就不是用Fix-Function pipeline渲染了吧?
CgFX的定义貌似只是说它支持Fix Function Pipeline的state。

PS: 至今还没完全弄清楚OGL的Vertex/Pixel Program的工作原理。

在我的FX5700上面,用到Program就会很慢很慢,跟DX用上Shader2.0之后的速度有一拼 =v=
莫非OGL的Program相当于Shader2.0?

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-11-2 20:08:00 | 显示全部楼层

Re:我现在要包装SHADER这个玩意。想用NVIDIA的CG.但是我不知

就是用shader当配置文件来做固定管道。EFFECT文件里面包含固定管道的SHADER 状态。用来做固定管道同样适应。CGFX肯定可以来做固定管道的。比如ztest = false;他会调用对应的opengl的函数设置状态。不过我没试验过。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 18:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表