Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
HLSL-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
//-----------------------------------------------------------------------------// Global variables//----------------------------------------------------------------------------- float4x4 wvp : WorldViewProjection; float4x4 world : World; float AmbientIntensity = 1; float4 AmbientColor : AMBIENT = float4(0,0,0,1); float3 LightDirection : Direction = float3(0,1,1); float3 CameraPosition : CameraPosition; texture clMap; texture glMap; texture bpMap; sampler ColorMap = sampler_state { Texture = ; MipFilter = LINEAR; MinFilter = LINEAR; MagFilter = LINEAR;}; sampler GlowMap = sampler_state { Texture = ; MipFilter = LINEAR; MinFilter = LINEAR; MagFilter = LINEAR;}; sampler BumpMap = sampler_state { Texture = ; MipFilter = LINEAR; MinFilter = LINEAR; MagFilter = LINEAR;}; struct VS_IN { float4 Position : POSITION; float2 TexCoord : TEXCOORD0; float3 Normal : NORMAL; float3 Tangent : TANGENT; }; struct VS_OUT { float4 Position : POSITION; float2 TexCoord : TEXCOORD0; float3 Light : TEXCOORD1; float3 CamView : TEXCOORD2; float4 posS : TEXCOORD3; float3 Normal : TEXCOORD4; }; struct PS_OUT { float4 Color : COLOR; }; VS_OUT vertexMain(VS_IN input) { VS_OUT output = (VS_OUT)0; output.Position = mul(input.Position,wvp); float3x3 worldToTangentSpace; worldToTangentSpace[0] = mul(input.Tangent,world); worldToTangentSpace[1] = mul(cross(input.Tangent,input.Normal),world); worldToTangentSpace[2] = mul(input.Normal,world);float4 PosWorld = mul(input.Position,world); output.Light = mul(worldToTangentSpace,LightDirection); output.CamView = CameraPosition - mul(input.Position,world); output.posS = input.Position;output.TexCoord = input.TexCoord; output.Normal = mul(input.Normal,world); return output; } PS_OUT pixelMain(VS_OUT input) { PS_OUT output = (PS_OUT)0; float3 Normal = (2 * (tex2D(BumpMap,input.TexCoord))) - 1.0; float3 LightDir = normalize(input.Light);float Diffuse = saturate(dot(LightDir,Normal)); float4 texCol = tex2D(ColorMap,input.TexCoord); float4 glowCol = tex2D(GlowMap,input.TexCoord); float4 Ambient = AmbientIntensity * AmbientColor; float4 glow = glowCol * saturate(1-Diffuse); texCol *= Diffuse;output.Color = Ambient + texCol + glow; return output; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
virtual void OnSetConstants(video::IMaterialRendererServices* services,s32 userData) { video::IVideoDriver* driver = services->getVideoDriver(); core::matrix4 World = driver->getTransform(video::ETS_WORLD); services->setVertexShaderConstant("world", World.pointer(), 16); core::matrix4 worldViewProj;worldViewProj = driver->getTransform(video::ETS_PROJECTION); worldViewProj *= driver->getTransform(video::ETS_VIEW); worldViewProj *= driver->getTransform(video::ETS_WORLD); services->setVertexShaderConstant("wvp", worldViewProj.pointer(), 16); // set camera position core::vector3df pos = device->getSceneManager()->getActiveCamera()->getPosition(); services->setVertexShaderConstant("CameraPosition", (f32*)(&pos), 3); } |
C-/C++-Quelltext |
|
1 2 3 |
node->setMaterialTexture(0, driver->getTexture("../media/Earth_Diffuse.jpg")); node->setMaterialTexture(1, driver->getTexture("../media/Earth_Night.jpg")); node->setMaterialTexture(2, driver->getTexture("../media/Earth_NormalMap.jpg")); |
Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von »Nexxtron« (30.01.2011, 14:01)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
video::IGPUProgrammingServices* gpu = driver->getGPUProgrammingServices(); s32 newMaterialType1 = 0; if (gpu) { MyShaderCallBack* mc = new MyShaderCallBack(); newMaterialType1 = gpu->addHighLevelShaderMaterialFromFiles(vsFileName, "vertexMain", video::EVST_VS_2_0,psFileName, "pixelMain", video::EPST_PS_2_0,mc, video::EMT_SOLID); mc->drop(); } scene::ISceneNode* node = smgr->addMeshSceneNode(smgr->getMesh("Sphere.x")); node->setScale(irr::core::vector3df(8,8,8)); node->setPosition(core::vector3df(0,0,0)); node->setMaterialTexture(0, driver->getTexture("../media/Earth_Diffuse.jpg")); node->setMaterialTexture(1, driver->getTexture("../media/Earth_Night.jpg")); node->setMaterialTexture(2, driver->getTexture("../media/Earth_NormalMap.jpg")); node->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1); smgr->addTextSceneNode(gui->getBuiltInFont(),L"PS & VS & EMT_SOLID",video::SColor(255,255,255,255),node); scene::ISceneNodeAnimator* anim = smgr->createRotationAnimator(core::vector3df(0,0.3f,0)); node->addAnimator(anim); node->setPosition(irr::core::vector3df(0,100,100)); anim->drop(); driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false); smgr->addSkyBoxSceneNode(driver->getTexture("../media/irrlicht2_up.jpg"), driver->getTexture("../media/irrlicht2_dn.jpg"), driver->getTexture("../media/irrlicht2_lf.jpg"), driver->getTexture("../media/irrlicht2_rt.jpg"), driver->getTexture("../media/irrlicht2_ft.jpg"), driver->getTexture("../media/irrlicht2_bk.jpg")); driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, true); scene::ICameraSceneNode* cam = smgr->addCameraSceneNodeFPS(); cam->setPosition(core::vector3df(0,100,100)); cam->setTarget(core::vector3df(0,0,0)); device->getCursorControl()->setVisible(false); int lastFPS = -1; while(device->run()) if (device->isWindowActive()) { driver->beginScene(true, true, video::SColor(255,0,0,0)); smgr->drawAll();driver->endScene(); int fps = driver->getFPS(); } device->drop(); |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Nexxtron« (30.01.2011, 14:34)
Werbeanzeige