游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1295|回复: 1

求助:my shadowmap

[复制链接]

6

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2006-11-22 10:58:00 | 显示全部楼层 |阅读模式
最近想用soft_edged介绍的方法做软阴影,首先我实现了深度图的拷贝,在用glsl实现PCF的shadowmap时,只能得到最后画的一个物体,不仅没有阴影,连物体色彩也没有,并且场景是黑色的
下面是我的GLSL代码:
..vertex shader
niform mat4 texturematrix;

varying vec4 projcood;
uniform vec4 lightpos;
varying float diffuse ;

void main()
{
projcood=texturematrix*gl_Vertex;
  
  vec4 pos = gl_ModelViewMatrix * gl_Vertex;
  
  vec3 n = gl_NormalMatrix * gl_Normal;
  
  vec3 lightvect = normalize(lightpos.xyz - pos.xyz);
  
  diffuse= max(dot(lightvect,n ), 0.0);
  
  gl_Position =ftransform();
}
//frgment shader

uniform  sampler2DShadow shadowmap;
varying vec4 projcood;
uniform float size;
uniform vec4 lightcolor;
varying float diffuse ;
uniform vec4 ambient;


void main()
{
  vec4 vtexcoord[9];
  float  shadowcolor[9];
  float texsize=1.0/size;
  vec4  color;
  

  float  factorshadow;
  vec4 xolor;
  vec4 projcood1;
//4  3  5
//1  0  2
//7  6  8   
// projcood1=projcood/projcood.w;  

               

  vtexcoord[0]=projcood;
  vtexcoord[1]=projcood+vec4(-texsize,0.0,0.0,0.0);
  vtexcoord[2]=projcood+vec4(texsize,0.0,0.0,0.0);
  vtexcoord[3]=projcood+vec4(0.0,-texsize,0.0,0.0);
  vtexcoord[6]=projcood+vec4(0.0,texsize,0.0,0.0);
  vtexcoord[4]=projcood+vec4(-texsize,-texsize,0.0,0.0);
  vtexcoord[7]=projcood+vec4(-texsize,texsize,0.0,0.0);
  
  vtexcoord[5]=projcood+vec4(texsize,-texsize,0.0,0.0);
  vtexcoord[8]=projcood+vec4(texsize,texsize,0.0,0.0);

  if(projcood.q< 0.0)
  {
     factorshadow=1.0;
  }
  else
  {
      for(int i=0;i<9;i++ )
      {
   
         shadowcolor=shadow2DProj(shadowmap, vtexcoord).r;
         factorshadow=factorshadow+shadowcolor;
      }
   
   
    factorshadow=factorshadow/9.0;
   // xolor=vec4(0.2,0.6,1.0,1.0);

  }


    //gl_FragColor=xolor;
  gl_FragColor=factorshadow*lightcolor*diffuse+ambient;
  
  
}

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-11-23 15:35:00 | 显示全部楼层

Re:求助:my shadowmap

除了normal在gl_NormalMatrix * gl_Normal后最好normalize一下外
就shader没看出什么问题
应该是上层应用的问题吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 23:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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