游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1942|回复: 5

小弟用vs实现cubemap,出来效果有些问题,望指教

[复制链接]

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2005-11-10 10:01:00 | 显示全部楼层 |阅读模式
   虽然dx8就加入了支持cubemap的接口,不过小弟我从学习的角度
用vs现实cubemap。我用的是dx9,hlsl写的。除于测试的需要,程序
里面我仅处理了物体正面(-z方向面)的纹理映射情况。下面是hlsl
代码。

matrix WorldMatrix;
matrix ViewMatrix;
matrix ProjMatrix;

struct VS_INPUT
{
   vector positionOSITION;
   vector normal:NORMAL;
};

struct VS_OUTPUT
{
   vector position:POSITION;
   vector diffuse:COLOR;
   float2 uvCoords:TEXCOORD;
};

VS_OUTPUT Shader_Cube_map( VS_INPUT input )
{
   float u=0,v=0;

   VS_OUTPUT output = (VS_OUTPUT)0;

   matrix WorldViewMatrix = mul( WorldMatrix,ViewMatrix );
   input.position = mul( input.position, WorldViewMatrix );
   output.position = mul( input.position, ProjMatrix );

   vector viewPoint = {0,0,0,1};
   viewPoint = mul( viewPoint, ViewMatrix );

   vector d = input.position-viewPoint;
   d = normalize(d);

   input.normal = mul( input.normal, WorldViewMatrix );
   input.normal = normalize( input.normal );  

   vector r = 2*(dot(d,input.normal))*input.normal-d;
  
   int max;
   float x=abs(r.x);
   float y=abs(r.y);
   float z=abs(r.z);
   if( x>y )
   {
      if( x>z )
         max = 0;
      else
         max = 2;
   }
   else
   {
      if( y>z )
         max = 1;
      else
         max = 2;
   }   

  if( max==2 )
  {
      if( r.z<0 )
      {
       u = (r.x+1)/2;
       v = (r.y+1)/2;
      }
   }

   output.uvCoords.x = u;
   output.uvCoords.y = v;
   output.diffuse = 1;

   return output;
}

我将程序上传,希望各位大虾看看,指教指教小弟,谢谢了!

sf_2005111010040.rar

405.34 KB, 下载次数:

32

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2005-11-10 11:47:00 | 显示全部楼层

Re:小弟用vs实现cubemap,出来效果有些问题,望指教

能否告诉小弟你在调用VS的几个必要的设置和函数 就想实现改变三角顶点的颜色 但是执行时什么也没有 一片空白 我想是调用出了问题 跪谢

16

主题

83

帖子

103

积分

注册会员

Rank: 2

积分
103
QQ
发表于 2005-11-12 10:02:00 | 显示全部楼层

Re:小弟用vs实现cubemap,出来效果有些问题,望指教

你的程序运行不了,下次放个RELEASE的啊.
以前做过CUBE ENVIRONMENT MAPPING 用的是PS,计算出REFLECT后,在PS中调用texCUBE就可以.
有些时候用不了PS,我们就退而求其次.直接把REFLECT 赋给 VS纹理坐标就OK了.

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
 楼主| 发表于 2005-11-14 18:35:00 | 显示全部楼层

Re: Re:小弟用vs实现cubemap,出来效果有些问题,望指教

arvent: Re:小弟用vs实现cubemap,出来效果有些问题,望指教

你的程序运行不了,下次放个RELEASE的啊.
以前做过CUBE ENVIRONMENT MAPPING 用的是PS,计算出REFLECT后,在P...


我改成release了,不知道能运行了不。我用的sdk是april 2005的。
同时里面也付有张截图。为了方便,我只处理了(-z)方向的贴
图情况。和你说的一样,我是简单的使用反射向量来确定纹理映射。
效果大致出来,但是贴图的区域边缘有些问题,还希望能够指教指
教。

sf_20051114183450.rar

124.84 KB, 下载次数:

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
 楼主| 发表于 2005-11-19 10:25:00 | 显示全部楼层

Re:小弟用vs实现cubemap,出来效果有些问题,望指教

怎么没人出来相救啊?

6

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2005-11-19 20:01:00 | 显示全部楼层

Re:小弟用vs实现cubemap,出来效果有些问题,望指教

你最好也自己实现像素shader,光从一个顶点程序中很难确定问题在哪里。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 16:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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