forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Ashadow & Шейдеры (http://forum.boolean.name/showthread.php?t=2352)

DRAG 09.01.2007 23:59

Ashadow & Шейдеры
 
Можно ли в Ashadow делать Шейдеры ? :dontknow:
Если можно , то подскажите как . --=={{{ ПЛИЗ }}}==--

jimon 10.01.2007 00:43

Re: Ashadow & Шейдеры
 
как я помню можно
хотя я досих пор мало че знаю об етой библе

а ты хоть знаеш что такое шейдер ?
по учи лутче HLSL....

DRAG 10.01.2007 00:46

Re: Ashadow & Шейдеры
 
Шейдер ето вродебы материал .

А HLSL помоему только на C++

alcoSHoLiK 10.01.2007 01:02

Re: Ashadow & Шейдеры
 
Если шейдер - это материал, тогда советую прочитать сначала вот это:
http://www.boolean.name/showthread.php?t=1358

Если не убедил, тогда вот это:
http://blitz.pp.ru/forum/showthread.php?s=&threadid=119

Успехов!

HolyDel 10.01.2007 01:06

Re: Ashadow & Шейдеры
 
шейдер - это микропрограмка, помоему. которая выполняется для каждой вершины/пикселя.
вроде на дх7 шейдеры не работают.

НУБ 10.01.2007 05:46

Re: Ashadow & Шейдеры
 
DRAG
А если было б можно, чем это тебе помогло бы?

jimon 10.01.2007 11:37

Re: Ashadow & Шейдеры
 
ну вот к примеру простенький особо ничего не делающий шейдер из примеров irrlichtа
юзается HLSL
других языков кроме асма и Cg для шейдеров не используют вообще

Код:

// part of the Irrlicht Engine Shader example.
// These simple Direct3D9 pixel and vertex shaders will be loaded by the shaders
// example. Please note that these example shaders don't do anything really useful.
// They only demonstrate that shaders can be used in Irrlicht.

//-----------------------------------------------------------------------------
// Global variables
//-----------------------------------------------------------------------------
float4x4 mWorldViewProj;  // World * View * Projection transformation
float4x4 mInvWorld;      // Inverted world matrix
float4x4 mTransWorld;    // Transposed world matrix
float3 mLightPos;        // Light position
float4 mLightColor;      // Light color


// Vertex shader output structure
struct VS_OUTPUT
{
        float4 Position  : POSITION;  // vertex position
        float4 Diffuse    : COLOR0;    // vertex diffuse color
        float2 TexCoord  : TEXCOORD0;  // tex coords
};


VS_OUTPUT vertexMain( in float4 vPosition : POSITION,
                      in float3 vNormal  : NORMAL,
                      float2 texCoord    : TEXCOORD0 )
{
        VS_OUTPUT Output;

        // transform position to clip space
        Output.Position = mul(vPosition, mWorldViewProj);
       
        // transform normal
        float3 normal = mul(vNormal, mInvWorld);
       
        // renormalize normal
        normal = normalize(normal);
       
        // position in world coodinates
        float3 worldpos = mul(mTransWorld, vPosition);
       
        // calculate light vector, vtxpos - lightpos
        float3 lightVector = worldpos - mLightPos;
       
        // normalize light vector
        lightVector = normalize(lightVector);
       
        // calculate light color
        float3 tmp = dot(-lightVector, normal);
        tmp = lit(tmp.x, tmp.y, 1.0);
       
        tmp = mLightColor * tmp.y;
        Output.Diffuse = float4(tmp.x, tmp.y, tmp.z, 0);
        Output.TexCoord = texCoord;
       
        return Output;
}



// Pixel shader output structure
struct PS_OUTPUT
{
    float4 RGBColor : COLOR0;  // Pixel color   
};


sampler2D tex0;
       
PS_OUTPUT pixelMain( float2 TexCoord : TEXCOORD0,
                    float4 Position : POSITION,
                    float4 Diffuse  : COLOR0 )
{
        PS_OUTPUT Output;

        float4 col = tex2D( tex0, TexCoord );  // sample color map
       
        // multiply with diffuse and do other senseless operations
        Output.RGBColor = Diffuse * col;
        Output.RGBColor *= 4.0;

        return Output;
}

вот как я помню шейдер для cartoon еффекта :)
на асме

он не отредактирован .... потому что так в код вставлялся
короче если убрать апострофы то будет все норм

Код:

                    "!!ARBvp1.0\n"
                    "OPTION ARB_position_invariant;"
                    "PARAM c0 = { 0, 0, 0, 0 };"
                    "TEMP R0, R1;"
                    "ATTRIB v18 = vertex.normal;"
                    "PARAM s18 = state.light[" << _lightnum << "].position;"
                    "PARAM s16 = state.light[" << _lightnum << "].diffuse;"
                    "PARAM s1 = state.material.diffuse;"
                    "PARAM s631[4] = { state.matrix.modelview.invtrans };"
                    "MOV R0, s1;"
                    "MUL result.color.front.primary, R0, s16;"
                    "DP4 R0.x, s18, s18;"
                    "RSQ R0.x, R0.x;"
                    "MUL R1, R0.x, s18;"
                    "DP4 R0.x, s631[0], v18;"
                    "DP4 R0.y, s631[1], v18;"
                    "DP4 R0.z, s631[2], v18;"
                    "DP4 R0.w, s631[3], v18;"
                    "DP4 R0.x, R1, R0;"
                    "MAX result.texcoord[0].x, c0.x, R0.x;"
                    "END";


DRAG 10.01.2007 13:40

Re: Ashadow & Шейдеры
 
Чтобы делать на HLSL надо хотяб директ выучить , а я его пока не знаю !
А асамблер ето вобще тёмный лес для меня !
Я думаю на барсике будет проще .

jimon 10.01.2007 13:53

Re: Ashadow & Шейдеры
 
шейдер пишется на HLSL или на Asm или на Cg
другие языки использовать не получится вообще

DRAG 10.01.2007 15:07

Re: Ashadow & Шейдеры
 
Я думаю что HLSL совместим с С++ .
Вроде все игры пишут на C++ и используют в них шейдеры .

jimon 10.01.2007 15:11

Re: Ashadow & Шейдеры
 
HLSL ето отдельный язык программирования !
шейдер ето ваще отдельная программа которая никак не связана с программой игры !

если игра выполняется на процесоре
то шейдер выполняется на видеокарте

почитай http://en.wikipedia.org/wiki/Shader

DRAG 10.01.2007 15:15

Re: Ashadow & Шейдеры
 
Ну а как всё ето работает ?
Сама программа игры вызывает программу с шейдером ? Или как ?

jimon 10.01.2007 16:27

Re: Ashadow & Шейдеры
 
программы с шейдером нету :) шейдер и есть программа
вопервых шейдер компилируется для текущей видеокарты (обычно в процессе загрузки левела)
ето надо потому что у разных фирм разные подходы в работе шейдеров
потом ета хрень передается видеокарте и вызывается в процессе рендера

DRAG 10.01.2007 16:56

Re: Ashadow & Шейдеры
 
Теперь понятно :)

Freestyler 10.01.2007 19:36

Re: Ashadow & Шейдеры
 
А Ашадоу юзает только 7-ой дирекс? А всякие эфекты типа рефракшен, рефлекшн, бамп, карты нормалей, это все без шейдеров?


Часовой пояс GMT +4, время: 22:12.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot