Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> файлы эффектов *.fx, где можно взять инфы? 
:(
    Опции темы
Helicopterr
  Дата 7.2.2006, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 1
Всего: 3



При выводе *.х файлов программы из DirectX 9 SDK используют также файлы эффектов с расширением .fx
Что-то тяжело в них разобраться... Никто ни знает где можно взять инфы о .fx?


--------------------
people can fly
PM MAIL   Вверх
empter
Дата 8.2.2006, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фанат
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 20.5.2005

Репутация: 3
Всего: 4



Это фаил для упращения работы с сэмплерами. шейдерами, проходами рендеринга и тп.

Цитата(Helicopterr @ 7.2.2006, 00:07 Найти цитируемый пост)

Никто ни знает где можно взять инфы о .fx?

Ну во первых посмотри документацию,
есть утилита EffectEdit в SDK, формат файла можно там посмотреть,
а загружается он вообще одной строчкой

Код

D3DXCreateEffectFromFile( g_pD3DDevice, ".\\FXfiles\\Models\\meshes.fx", NULL, NULL, 
                                               0, NULL, &m_pEffect, NULL )


затем при рендеринге пишешь
Код

m_pEffect->Begin( 0,0 );
    m_pEffect->Pass( 0);
        Object.render();
    
    m_pEffect->End();



Ну или что то подобное smile



PM MAIL MSN   Вверх
Helicopterr
Дата 8.2.2006, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 1
Всего: 3



Текст этих файлов тяжеловат. Вот например ещё простой fx, мелкомягкие своего тигра подгружают и подсвечивают желтым цветом:
Код

//
// Glow Effect
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Note: This effect file works with EffectEdit.
//

string XFile = "mesh\\tiger\\tiger.x";   // model
string BIMG  = "image\\lake.bmp";  // Background image
int    BCLR  = 0xff202080;  // background

// texture
texture Tex0 < string name = "mesh\\tiger\\tiger.bmp"; >;

// transforms
float4x3 WorldView  : WORLDVIEW; 
float4x4 Projection : PROJECTION;

// light direction (view space)
float3 LightDir < string UIDirectional = "Light Direction"; > = normalize(float3(0.0f, 0.0f, 1.0f));

// glow parameters
float4 GlowColor     = float4(0.5f, 0.2f, 0.2f, 1.0f);
float4 GlowAmbient   = float4(0.2f, 0.2f, 0.0f, 0.0f);
float  GlowThickness = 0.015f;

struct VSTEXTURE_OUTPUT
{
    float4 Position : POSITION;
    float4 Diffuse  : COLOR;
    float2 TexCoord : TEXCOORD0;
};

// draws unskinned object with one texture and one directional light.
VSTEXTURE_OUTPUT VSTexture
    (
    float4 Position : POSITION, 
    float3 Normal   : NORMAL,
    float2 TexCoord : TEXCOORD0
    )
{
    VSTEXTURE_OUTPUT Out = (VSTEXTURE_OUTPUT)0;
  
    float3 L = -LightDir;                                   // light direction (view space)
    float3 P = mul(Position, WorldView);                    // position (view space)
    float3 N = normalize(mul(Normal, (float3x3)WorldView)); // normal (view space)
   
    Out.Position = mul(float4(P, 1), Projection);   // projected position
    Out.Diffuse  = max(0, dot(N, L));               // diffuse 
    Out.TexCoord = TexCoord;                        // texture coordinates
    
    return Out;    
}

struct VSGLOW_OUTPUT
{
    float4 Position : POSITION;
    float4 Diffuse  : COLOR;
};

// draws a transparent hull of the unskinned object.
VSGLOW_OUTPUT VSGlow
    (
    float4 Position : POSITION, 
    float3 Normal   : NORMAL
    )
{
    VSGLOW_OUTPUT Out = (VSGLOW_OUTPUT)0;

    float3 N = normalize(mul(Normal, (float3x3)WorldView));     // normal (view space)
    float3 P = mul(Position, WorldView) + GlowThickness * N;    // displaced position (view space)
    float3 A = float3(0, 0, 1);                                 // glow axis

    float Power;

    Power  = dot(N, A);
    Power *= Power;
    Power -= 1;
    Power *= Power;     // Power = (1 - (N.A)^2)^2 [ = ((N.A)^2 - 1)^2 ]
    
    Out.Position = mul(float4(P, 1), Projection);   // projected position
    Out.Diffuse  = GlowColor * Power + GlowAmbient; // modulated glow color + glow ambient
    
    return Out;    
}



technique TGlowAndTexture
{
    pass PTexture
    {   
        // single texture/one directional light shader
        VertexShader = compile vs_1_1 VSTexture();
        PixelShader  = NULL;
        
        // texture
        Texture[0] = (Tex0);

        // sampler states
        MinFilter[0] = LINEAR;
        MagFilter[0] = LINEAR;
        MipFilter[0] = POINT;

        // set up texture stage states for single texture modulated by diffuse 
        ColorOp[0]   = MODULATE;
        ColorArg1[0] = TEXTURE;
        ColorArg2[0] = CURRENT;
        AlphaOp[0]   = DISABLE;

        ColorOp[1]   = DISABLE;
        AlphaOp[1]   = DISABLE;
        
    }

    pass PGlow
    {   
        // glow shader
        VertexShader = compile vs_1_1 VSGlow();
        PixelShader  = NULL;
        
        // no texture
        Texture[0] = NULL;

        // enable alpha blending
        AlphaBlendEnable = TRUE;
        SrcBlend         = ONE;
        DestBlend        = ONE;

        // set up texture stage states to use the diffuse color
        ColorOp[0]   = SELECTARG2;
        ColorArg2[0] = DIFFUSE;
        AlphaOp[0]   = SELECTARG2;
        AlphaArg2[0] = DIFFUSE;

        ColorOp[1]   = DISABLE;
        AlphaOp[1]   = DISABLE;
    }
}



я уже и так и так думал но если к .х файлу необходимы 2 текстуры, как загрузить вторую?
Пробовал вслед за
texture Tex0 < string name = "mesh\\MYtiger\\tiger1.bmp"; >;
писать
texture Tex1 < string name = "mesh\\tiger\\MYtiger2.bmp"; >;
и далее в том же духе, но никак.


--------------------
people can fly
PM MAIL   Вверх
empter
Дата 8.2.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фанат
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 20.5.2005

Репутация: 3
Всего: 4



Ето они туда шейдер запихнули, начни с чего нибудь попроще
например

t
Код

echnique tec0
{
    pass p0
    {
        // Материалы
        MaterialAmbient = {1.0, 1.0, 1.0, 1.0}; 
        MaterialDiffuse = {1.0, 1.0, 1.0, 1.0}; 
        MaterialSpecular = {1.0, 1.0, 1.0, 1.0}; 
        MaterialPower = 1.0f;
        
        // Направление света
        LightType[0]      = DIRECTIONAL;
        LightDiffuse[0]   = {0.5, 0.5, 0.5, 1.0};
        LightAmbient[0]   = {0.5, 0.5, 0.5, 1.0};
        LightDirection[0] = {-1.0, 0.0, 0.0};
   
        
        // Включаем нулевой свет 
        LightEnable[0] = True;
        Lighting = True;
        SpecularEnable = False;

    
    ColorOp[0] = Modulate;
        ColorArg1[0] = Texture;
        ColorArg2[0] = Diffuse;
        AlphaOp[0] = Modulate;
        MinFilter[0] = Linear;
        MagFilter[0] = Linear;
        MipFilter[0] = Linear;
        
        // Disable texture stage 1
        ColorOp[1] = Disable;
        AlphaOp[1] = Disable;
   
    }
}


загружаются текстуры в коде,
а фаил отвечает за освещение обьекта

просто вместо того чтобы писать
кучу SetSamplerState и при изменении
каждый раз компилять, загружаешь один .fx фаил

Это сообщение отредактировал(а) empter - 8.2.2006, 22:08
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0660 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.