游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2181|回复: 3

片断渲染问题,为什么老黑屏?

[复制链接]

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-4-30 12:53:00 | 显示全部楼层 |阅读模式
把waterworld改到OpenGL下,顶点渲染可以了,但着色一直不行,这是fragment的代码:
struct PS_INPUT  {
          float2 tcBump0 : TEXCOORD0; //texture coordinates
          float2 tcBump1 : TEXCOORD1; //texture coordinates
        float3 vEye : TEXCOORD2; //eye vector
          float3x3 mToWorld: TEXCOORD3;
  };
   struct PS_OUTPUT  {
        float4 vColor : COLOR0;
  };
     PS_OUTPUT main(PS_INPUT input,
                             float4 watercolor,
                             float4 waterhighcolor,
                             uniform sampler BumpTex0,
                           uniform sampler BumpTex1,
                             uniform sampler CubeTex)  
{
        // zero out members of output
          PS_OUTPUT output;
          // sample appropriate textures
        float3 vNormal0 = tex2D(BumpTex0, input.tcBump0).xyz;
          float3 vNormal1 = tex2D(BumpTex1, input.tcBump1).xyz;
          float3 vNormal = (vNormal0 + vNormal1 )/2;
          vNormal = mul(vNormal, input.mToWorld);
          float eDotN = dot(input.vEye, vNormal);
        float3 vEyeReflected = 2* eDotN * vNormal - input.vEye;                    float4 reflection = texCUBE(CubeTex, vEyeReflected);
        float Fresnel = (1 - eDotN)*reflection.g;
        float4 diffuse = watercolor * 0.5 * eDotN;
        float4 color = saturate(lerp(diffuse,reflection * 1.2 * eDotN,Fresnel) + reflection * 0.3);
        float4 specular = waterhighcolor * pow(reflection.g,8) * eDotN ;          output.vColor = saturate(color + specular);
          return output;
}  


1.是不是只要把BumpTex0,BumpTex1,CubeTex传进去就可以了,其它参数不用管?
2.我随便生成了个纹理传进去,然后cgGLEnableProfile(fProfile);cgGLBindProgram(fProgram);之后画面就是黑的了,这是怎么回事?
3.还有BumpTex0,BumpTex1,CubeTex这几个纹理是怎么生成的?

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-5-29 12:17:00 | 显示全部楼层

Re:片断渲染问题,为什么老黑屏?

为什么没人回答啊?

24

主题

256

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2007-5-29 21:23:00 | 显示全部楼层

Re:片断渲染问题,为什么老黑屏?

其它参数不用管?
当然要管啦,没有纹理坐标,GPU乍知道去哪采样呀?
CubeTex好像是个立体纹理,当然也得特别处理。
      float4 watercolor,
      float4 waterhighcolor,
也要有值传进去呀,不然的话默认是0.0,也就是黑色。
如果你是初学者,这个程序对你来说复杂了点,换个简单的来试试吧。



---------------------------------
www.physdev.com

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-5-30 20:28:00 | 显示全部楼层

Re: 片断渲染问题,为什么老黑屏?

CG方面的资料好少啊,学的真的很困难,周围也没个人可以问的,最好是有个明白简单点的源码看看,当然CG例子除外,很想做个海洋出来,郁闷啊:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 08:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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