Aktuelle Zeit: 28.04.2024, 21:25

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 19.11.2007, 19:31 
Offline

Registriert: 08.04.2007, 16:55
Beiträge: 115
als string in c++ reingecoded^^


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 11.12.2007, 19:54 
Offline
Benutzeravatar

Registriert: 24.07.2007, 23:11
Beiträge: 283
ich hab da irgentwie nen prob klappt nicht so wirklich.
hab versucht es nen bisschen sauberer darstellen zu lassen und inner klasse verfaßt aber irgentwie passt das net

liegt es vlt am objekt?
Code:
const stringc vertLavaShader =
"varying vec2 Texcoord;"
"varying vec4 Pos;"
"void main( void )"
"{"
"    gl_Position = ftransform();"
"    Pos=gl_Vertex;"
"    Texcoord    = gl_MultiTexCoord0.xy;"
""   
"}"
;

const stringc fragLavaShader =
"uniform sampler2D Texture1;"
"uniform sampler2D Texture2;"
"uniform float time;"
""
"varying vec2 Texcoord;"
"varying vec4 Pos;"
"void main( void )"
"{"
"vec4 noise = texture2D( Texture1,Texcoord);"
"vec2     T1=  Texcoord+vec2(1.5,-1.5)*time*0.02;"
"vec2     T2=  Texcoord+vec2(-0.5,2.0)*time*0.01;"
"T1.x+=(noise.x)*2.0;"
"T1.y+=(noise.y)*2.0;"
"T2.x-=(noise.y)*0.2;"
"T2.y+=(noise.z)*0.2;"
"float     p=  texture2D( Texture1,T1*2.0).a;" 
"vec4 color =  texture2D( Texture2, T2*2.0);"
"vec4 temp= color*(vec4(p,p,p,p)*2.0)+(color*color-0.1);"
"if(temp.r>1.0){temp.bg+=clamp(temp.r-2.0,0.0,100.0);}"
"if(temp.g>1.0){temp.rb+=temp.g-1.0;}"
"if(temp.b>1.0){temp.rg+=temp.b-1.0;}"
"    gl_FragColor = temp;"
"}"
;

void Shader_Lava_callback::OnSetConstants(video::IMaterialRendererServices* services, s32 userData)
{
   IVideoDriver* driver = services->getVideoDriver();
   int var0 = 0;
   int var1 = 1;

   time += 0.005;
   services->setVertexShaderConstant("time", reinterpret_cast<f32*>(&time),1);
   services->setPixelShaderConstant("Texture1", (float*)(&var0), 1);
   services->setPixelShaderConstant("Texture2", (float*)(&var1), 1);
}

void cShader::initLava(irr::scene::ISceneNode* Model)
{
   gpu = SD->Driver->getGPUProgrammingServices();
   s32 mtlLavaShader = video::EMT_SOLID;
   Shader_Lava_callback* callback = new Shader_Lava_callback;
   mtlLavaShader = gpu->addHighLevelShaderMaterial( vertLavaShader.c_str(), "main", video::EVST_VS_1_1, fragLavaShader.c_str(), "main", video::EPST_PS_1_1, callback, video::EMT_SOLID);

   Model->setMaterialFlag(EMF_LIGHTING, false);
   Model->setMaterialTexture(0, SD->Driver->getTexture("..\\data\\cloud.tga"));
   Model->setMaterialTexture(1, SD->Driver->getTexture("..\\data\\lavatile.jpg"));
   Model->setMaterialType((video::E_MATERIAL_TYPE)mtlLavaShader);
}



Dateianhänge:
shader.jpg
shader.jpg [ 6.07 KiB | 8291-mal betrachtet ]

_________________
Be Fluffy!
kemomi.de
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 12.12.2007, 15:22 
Offline

Registriert: 08.04.2007, 16:55
Beiträge: 115
sry hab leider meine graka geschreddert, kann das dher nicht ausprobieren..
paar fragen:
hast du sicher alle Grafiken? //dumme frage, ich weiß.. aber probiers mal aus (im shader) ob wirklich beide ankommen
hast du den shadercode selbst geändert?
was hast du sonnst geändert?

wtf?? warum sieht das so aus?? ich hab echt keine ahnung..
hmm der orginalcode funzt aber?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 12.12.2007, 15:51 
Offline
Newsposter
Benutzeravatar

Registriert: 12.03.2007, 10:42
Beiträge: 338
Wohnort: Berlin
hab selber leider ka von shadern aber könnte es sein das da du es ja in eine klasse gefasst hast in mehreren funktionen eine Variable mit gleichem Namen hast aber du diese nicht als klassen-global deklariert hast?

p.s. ich guck ma heute abend ob ich da was finde -.- --> bin noch @work und hab keine zeit viel nachzulesen


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 12.12.2007, 16:30 
Offline
Benutzeravatar

Registriert: 24.07.2007, 23:11
Beiträge: 283
ja habe alle grafiken

Zitat:
probiers mal aus (im shader)

wie?

und nein nur nen bischen die reinfolge von dem c++ code aber daran sollte es auch nicht liegen

und den standart shader konnte er so wie die datei war nicht ausführen

_________________
Be Fluffy!
kemomi.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 14.12.2007, 17:03 
Offline
Benutzeravatar

Registriert: 24.07.2007, 23:11
Beiträge: 283
gibts keinen der mir mehr helfen kann?

edit:: mhh kp wie das zustande kahm aber time musste auf 0 aber nun bewegt sich nix :/ hat wer ne idee?

edit2:: klappt alles hab dauerhaft time auf 0 gehabt deswegen
und hier der code vlt brauchts ja wer noch
shader.h:
Code:
class cShader
{
public:
   sGamestruct* SD;
   IGPUProgrammingServices* gpu;

   void initLava(ISceneNode* Model);
};

class Shader_Lava_callback: public video::IShaderConstantSetCallBack
{
public:
   float time;
   bool initTime;
   virtual void OnSetConstants(video::IMaterialRendererServices* services, s32 userData);
};

shader.cpp
Code:
const stringc vertLavaShader =
"varying vec2 Texcoord;"
"varying vec4 Pos;"
"void main(void)"
"{"
"    gl_Position   = ftransform();"
"    Pos         = gl_Vertex;"
"    Texcoord      = gl_MultiTexCoord0.xy;" 
"}"
;

const stringc fragLavaShader =
"uniform sampler2D Texture1;"
"uniform sampler2D Texture2;"
"uniform float time;"
""
"varying vec2 Texcoord;"
"varying vec4 Pos;"
"void main(void)"
"{"
   "vec4 noise = texture2D(Texture1,Texcoord);"
   "vec2    T1 =  Texcoord+vec2(1.5, -1.5) * time * 0.02;"
   "vec2    T2 =  Texcoord+vec2(-0.5, 2.0) * time * 0.01;"
   "float p   = texture2D(Texture1, T1 * 2.0).a;" 
   "vec4 color = texture2D(Texture2, T2 * 2.0);"
   "vec4 temp   = color*(vec4(p, p, p, p) * 2.0) + (color * color - 0.1);"
   ""
   "T1.x += (noise.x) * 2.0;"
   "T1.y += (noise.y) * 2.0;"
   "T2.x -= (noise.y) * 0.2;"
   "T2.y += (noise.z) * 0.2;"
   "if(temp.r > 1.0)"
   "{"
      "temp.bg += clamp(temp.r - 2.0, 0.0, 100.0);"
   "}"
   "if(temp.g > 1.0)"
   "{"
      "temp.rb += temp.g - 1.0;"
   "}"
   "if(temp.b > 1.0)"
   "{"
      "temp.rg += temp.b - 1.0;"
   "}"
   "gl_FragColor = temp;"
"}"
;

void Shader_Lava_callback::OnSetConstants(video::IMaterialRendererServices* services, s32 userData)
{
   int var0 = 0;
   int var1 = 1;
   if(initTime == false)
   {
      time = 0;
      initTime = !initTime;
   }
   time = time + 0.05f;
   IVideoDriver* driver = services->getVideoDriver();
   services->setVertexShaderConstant("time", reinterpret_cast<f32*>(&time),1);
   services->setPixelShaderConstant("Texture1", (float*)(&var0), 1);
   services->setPixelShaderConstant("Texture2", (float*)(&var1), 1);
}

void cShader::initLava(irr::scene::ISceneNode* Model)
{
   gpu = SD->Driver->getGPUProgrammingServices();
   s32 mtlLavaShader = video::EMT_SOLID;
   Shader_Lava_callback* callback = new Shader_Lava_callback;
   callback->initTime = false;
   mtlLavaShader = gpu->addHighLevelShaderMaterial( vertLavaShader.c_str(), "main", video::EVST_VS_1_1, fragLavaShader.c_str(), "main", video::EPST_PS_1_1, callback, video::EMT_SOLID);

   Model->setMaterialFlag(EMF_LIGHTING, false);
   Model->setMaterialTexture(0, SD->Driver->getTexture("..\\data\\cloud.tga"));
   Model->setMaterialTexture(1, SD->Driver->getTexture("..\\data\\lavatile.jpg"));
   Model->setMaterialType((video::E_MATERIAL_TYPE)mtlLavaShader);
}


_________________
Be Fluffy!
kemomi.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 17.12.2007, 16:17 
Offline

Registriert: 08.04.2007, 16:55
Beiträge: 115
großes Dankeschön für deine Bemühungen. und sry nochmal, dass ich dir nicht helfen konnte...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 27.12.2007, 16:31 
Offline
Benutzeravatar

Registriert: 28.06.2007, 18:26
Beiträge: 54
Wohnort: München
Funken die Shader auch bei ATI Grafiken ?
Hab zwar kein ATI mehr aber als ich es mal hatte gingen die Shader Package(s) nicht.
Hat sich starten lassen aber das einzeigste was man gesehen hat wahr eine weise Box und
ein Schwarze hintergrund.

_________________
XtremBit.kilu.de
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 27.12.2007, 17:31 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Also auf meiner ATI funzen die.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 27.12.2007, 23:26 
Offline

Registriert: 08.04.2007, 16:55
Beiträge: 115
jo.. hab die selber unter ner ATI radeon 9800 Pro entwickelt... (die hats leider zerissen) unter meiner neune Geforce 7600 GT funzen die irgentweshalb nicht mehr °_o


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 28.12.2007, 12:42 
Offline

Registriert: 23.04.2007, 20:02
Beiträge: 73
Also ich habne Geforce 7600 GS und die Shader laufen perfekt. Vielleicht ists ja ein
Treiberproblem ?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TGMs Shader Package[GLSL,C++]
BeitragVerfasst: 28.12.2007, 21:03 
Offline

Registriert: 08.04.2007, 16:55
Beiträge: 115
könnte sein..
hab keinen blassen dunst warum..


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de