游戏开发论坛

 找回密码
 立即注册
搜索
查看: 26908|回复: 38

快速8-bit通道的伪HDR

[复制链接]

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-2-17 21:16:00 | 显示全部楼层 |阅读模式
看了Hugo老师的文章,试验了一下.
写了一个Fragment shader,用ShaderDesigner写的.

fakehdr.frag

//http://freespace.virgin.net/hugo.elias/graphics/x_posure.htm
//Hugo老师指出,曝光度是根据进入镜头的光线来决定的。
//在我们渲染完一个图象后,应该采用float16格式来保存。
//但是如果对于一个不是float16格式的Rendertarget,我们可以取
//周围的颜色平均后作为决定曝光度的因子,
//以下的shader代码应该说是非常偷工减料的。但是效果看上去还可以。
uniform sampler2D texture;
const float blurfactor = 12.5;//blur度,就是把多远处的像素取过来
const float expfactor = 0.8;//曝光度
const float cdelp = 0.0009765625;//一个像素对应的float大小。我用的纹理是1024,自己去算
const float sharpness = 0.8;//看代码。。。。

vec4 xposure(vec4 cl,float e)
{
   return ( exp(expfactor) -  exp(expfactor-e)) * cl;
}

void main()
{
  float delp = blurfactor* cdelp;
  vec4 texColor = texture2D(texture,vec2(gl_TexCoord[0].s     ,gl_TexCoord[0].t     ));
  //把当前位置的颜色和周围的做blur,算曝光度时候和算最后颜色结合的时候,权重是不同,
  //最终的颜色是。。。。。
  vec4  color = texColor*2.0  / 22.0;
  color += texture2D(texture,vec2(gl_TexCoord[0].s+delp,gl_TexCoord[0].t+delp))*5.0 /22.0;
  color += texture2D(texture,vec2(gl_TexCoord[0].s+delp,gl_TexCoord[0].t-delp))*5.0 /22.0;
  color += texture2D(texture,vec2(gl_TexCoord[0].s-delp,gl_TexCoord[0].t-delp))*5.0 /22.0;
  color += texture2D(texture,vec2(gl_TexCoord[0].s-delp,gl_TexCoord[0].t+delp))*5.0 /22.0;
  float e = color.r * 0.3 + color.g * 0.59 + color.b * 11;
  //算出了亮度信息,
  gl_FragColor  =  xposure(texColor*sharpness + color*(1-sharpness),e);
}
下图是原图

sf_2005217211652.jpg

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-2-17 21:21:00 | 显示全部楼层

Re: 快速8-bit通道的伪HDR

这里是曝光度为 0.8
sf_2005217212123.jpg

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-2-17 21:24:00 | 显示全部楼层

Re: 快速8-bit通道的伪HDR

这里是曝光度为 1.2
sf_2005217212412.jpg

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-2-17 21:27:00 | 显示全部楼层

Re: 快速8-bit通道的伪HDR

曝光度为1.8
sf_2005217212735.jpg

11

主题

53

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2005-2-18 08:59:00 | 显示全部楼层

Re:快速8-bit通道的伪HDR

还是大大猛!!赞一个!!

1

主题

60

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2005-2-18 09:59:00 | 显示全部楼层

Re:快速8-bit通道的伪HDR

帮!最近正在研究这个。

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-2-18 23:07:00 | 显示全部楼层

Re:快速8-bit通道的伪HDR

怎么没人顶啊。

0

主题

10

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2005-2-19 10:26:00 | 显示全部楼层

Re:快速8-bit通道的伪HDR

不错,不错

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-2-19 17:40:00 | 显示全部楼层

Re:快速8-bit通道的伪HDR

HDR 具体是什么?

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-2-19 19:37:00 | 显示全部楼层

Re:快速8-bit通道的伪HDR

High Dynamic Range (Image)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 11:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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