幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5673|回复: 13

[3D工具&引擎] [求助]关于即时光影

[复制链接]

13

主题

141

帖子

1613

积分

⑥精研

七志

积分
1613
QQ
发表于 2008-1-1 12:16:58 | 显示全部楼层 |阅读模式
我们知道,现在大部分3D引擎支持动态光影HDR,法线贴图,滤镜效果......
画面越来越好.
但是我看到GS开发的画面一般都很差,没有阴影,没有光感,体积感,棱角分明....
虽然利用烘培贴图可以让画面好一些,
甚至可以把阴影,高光等等烘培到所有物体的贴图里面,但是我很想知道,
GS引擎方面,能做到什么样子的即时效果呢?
[url]modelcheap.com[/url] 我的主页
回复

使用道具 举报

13

主题

141

帖子

1613

积分

⑥精研

七志

积分
1613
QQ
 楼主| 发表于 2008-1-1 12:20:34 | 显示全部楼层
也就是即时渲染能力,
画面全靠贴图的话,感觉跟网游差不多,人物飘飘的,感觉不好[s:3]
[url]modelcheap.com[/url] 我的主页
回复 支持 反对

使用道具 举报

6

主题

199

帖子

18

积分

版主

Rank: 7Rank: 7Rank: 7

积分
18
发表于 2008-1-1 12:36:16 | 显示全部楼层
動態陰影當然有啦。
使用各種fx腳本,各種shader的效果基本上都做得到。
單看遊戲截圖來評估一個引擎的功能是不可以作準的。
回复 支持 反对

使用道具 举报

18

主题

428

帖子

5260

积分

⑦老手

在美工荒中挣扎的全能

积分
5260
QQ
发表于 2008-1-1 12:44:31 | 显示全部楼层
自己写Shader吧= =
不过话说模板阴影之类的貌似需要引擎支持吧= v =
回复 支持 反对

使用道具 举报

13

主题

141

帖子

1613

积分

⑥精研

七志

积分
1613
QQ
 楼主| 发表于 2008-1-1 12:48:39 | 显示全部楼层
引用第2楼ultranet于2008-01-01 12:36发表的  :
動態陰影當然有啦。
使用各種fx腳本,各種shader的效果基本上都做得到。
單看遊戲截圖來評估一個引擎的功能是不可以作準的。
的确没有见到比较好的游戏画面,所以才有这个疑问,
我不是程序员,不太了解引擎的架构.
[url]modelcheap.com[/url] 我的主页
回复 支持 反对

使用道具 举报

37

主题

361

帖子

10

积分

版主

Turn around...I'm rig

Rank: 7Rank: 7Rank: 7

积分
10
QQ
发表于 2008-1-1 20:43:22 | 显示全部楼层
static const float AmbientIntensity    = 1.0f;                    // The intensity of the ambient light.
static const float DiffuseIntensity = 1.0f;                    // The intensity of the diffuse light.
static const float4 SunColor = {0.9f, 0.9f, 0.5f, 1.0f};    // Color vector of the sunlight.

// Application fed data:
const float4x4 matWorldViewProj;    // World*view*projection matrix.
const float4x4 matWorld;            // World matrix.
const float4 vecAmbient;            // Ambient color, passed by the engine.
const float4 vecSunDir;                // The sun direction vector.

texture entSkin1;                             // Color map.
sampler ColorMapSampler = sampler_state        // Color map sampler.
{
    Texture = <entSkin1>;
    AddressU  = Clamp;
    AddressV  = Clamp;
};

/***********************************************************************************************
/    Vertex Shader:
/***********************************************************************************************/
void DiffuseVS(    in float4 InPos        : POSITION,
                in float3 InNormal    : NORMAL,
                in float2 InTex        : TEXCOORD0,
               
                out float4 OutPos    : POSITION,
                out float2 OutTex    : TEXCOORD0,
                out float3 OutNormal: TEXCOORD1)
{
    // Transform the vertex from object space to clip space:
    OutPos = mul(InPos, matWorldViewProj);
   
    // Transform the normal from object space to world space:
    OutNormal = normalize(mul(InNormal,matWorld));
   
    // Pass the texture coordinate to the pixel shader:
    OutTex = InTex;
}


/***********************************************************************************************
/    Pixel Shader:
/***********************************************************************************************/
float4 DiffusePS(    in float2 InTex        : TEXCOORD0,
                    in float3 InNormal    : TEXCOORD1) : COLOR
{
    // Calculate the ambient term:
    float4 Ambient = AmbientIntensity * vecAmbient;
   
    // Calculate the diffuse term:
    float4 Diffuse = DiffuseIntensity * saturate(dot(vecSunDir, normalize(InNormal)));
    Diffuse *= SunColor;
   
    // Fetch the pixel color from the color map:
    float4 Color = tex2D(ColorMapSampler, InTex);
   
    // Calculate final color:
    return (Ambient + Diffuse) * Color;
}

/***********************************************************************************************
/    Technique:
/***********************************************************************************************/
technique DiffuseTechnique
{
    pass P0
    {
        VertexShader = compile vs_2_0 DiffuseVS();
        PixelShader  = compile ps_2_0 DiffusePS();
    }
}
////////////////////
存为.FX
3dmax+3drad=本人(3dmad) http://gdev.uu1001.com(游戏制作丛林)
回复 支持 反对

使用道具 举报

37

主题

361

帖子

10

积分

版主

Turn around...I&#39;m rig

Rank: 7Rank: 7Rank: 7

积分
10
QQ
发表于 2008-1-1 20:44:33 | 显示全部楼层
在wdl内又加:
material Diffuse
{
    ambient_red = 50;            
    ambient_green = 50;
    ambient_blue = 50;
    effect = &quot;123.fx&quot;;   
}
action abc
{
my.material = Diffuse
}



//////////////////////////////////
不知道为什么这个脚本好像用不了,使那个图变成一个颜色
3dmax+3drad=本人(3dmad) http://gdev.uu1001.com(游戏制作丛林)
回复 支持 反对

使用道具 举报

37

主题

361

帖子

10

积分

版主

Turn around...I&#39;m rig

Rank: 7Rank: 7Rank: 7

积分
10
QQ
发表于 2008-1-1 20:55:07 | 显示全部楼层
引用第3楼Miliardo于2008-01-01 12:44发表的  :
自己写Shader吧= =
不过话说模板阴影之类的貌似需要引擎支持吧= v =
你来帮我写吧!!!
3dmax+3drad=本人(3dmad) http://gdev.uu1001.com(游戏制作丛林)
回复 支持 反对

使用道具 举报

6

主题

199

帖子

18

积分

版主

Rank: 7Rank: 7Rank: 7

积分
18
发表于 2008-1-1 22:07:21 | 显示全部楼层
其實動態光影的設置非常簡單,
首先在main函數設shadow_stencil=ON;
然後在entity的action設set(my,SHADOW);
這樣entity就會被太陽光或其他發光體照射而產生動態陰影。
回复 支持 反对

使用道具 举报

37

主题

361

帖子

10

积分

版主

Turn around...I&#39;m rig

Rank: 7Rank: 7Rank: 7

积分
10
QQ
发表于 2008-1-1 22:23:59 | 显示全部楼层
那样的话还不如在 wed直接设置……只是很难看。问题我解决了,搞一个太阳就可以了 [s:1]  [s:2]
3dmax+3drad=本人(3dmad) http://gdev.uu1001.com(游戏制作丛林)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-20 00:54 , Processed in 0.021865 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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