![Page 1: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/1.jpg)
g008-EnvMap
Environment mapping
Szécsi László
![Page 2: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/2.jpg)
gg008-EnvMap project
• copy-paste-rename gg007-Texture folder• vcxproj, filters átnevezés• solution/add existing project• rename project• working dir: $(SolutionDir)• Project Properties/Configuration
Properties/Debugging/Command Arguments--solutionPath:"$(SolutionDir)" --projectPath:"$(ProjectDir)"
• build, run
![Page 3: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/3.jpg)
fx/envmapped.fx#include <textured.fx>
float3 eyePos;TextureCube envTexture;
float4 psEnvMapped(VsosTrafo input) : SV_Target{
float3 viewDir = normalize(input.worldPos - eyePos);float3 reflectionDir = reflect(viewDir, input.normal);return 0.5 * envTexture.Sample(linearSampler, reflectionDir) + 0.5 * kdTexture.Sample(linearSampler, input.tex);
}
technique11 envmapped{
pass envmapped{SetVertexShader ( CompileShader( vs_5_0, vsTrafo() ) );SetPixelShader( CompileShader( ps_5_0, psEnvMapped() ) );}
}
#9.0
![Page 4: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/4.jpg)
fx/main.fx#include <envmapped.fx>
#9.0
![Page 5: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/5.jpg)
Game.hclass Game{ID3D11ShaderResourceView* envTextureSrv;
#10.0
![Page 6: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/6.jpg)
Game.cpp// createResources
D3DX11CreateShaderResourceViewFromFileA(device,systemEnvironment.resolveMediaPath( "cloudyNoon.dds" ).c_str(),
NULL, NULL, &envSrv, NULL);
effect->GetVariableByName("envTexture")->AsShaderResource()->SetResource(envSrv);
// releaseResourcesenvSrv->Release();
#10.1
![Page 7: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/7.jpg)
Game.cppID3DX11EffectPass* basicPass = effect->GetTechniqueByName("envmapped")->GetPassByName("envmapped");
Egg::Mesh::Material::P envmappedMaterial = Egg::Mesh::Material::create(basicPass, 0);
shadedMesh = binder->bindMaterial(envmappedMaterial, indexedMesh);
![Page 8: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/8.jpg)
Game.cpp//render
effect->GetVariableByName("eyePos")->AsVector()->SetFloatVector( (float*)&firstPersonCam->getEyePosition());
![Page 9: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/9.jpg)
Env map tükröződés kész
![Page 10: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/10.jpg)
Látsszon a környezet a háttérben
• full-viewport quad– új mesh– Mesh::Indexed::createQuad()
• minden pixel olyan színű amilyen irányban látszik– vsQuad– psBackground– envmapped|background pass
![Page 11: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/11.jpg)
fx/envmapped.fxstruct IaosQuad{float4 pos: POSITION;float2 tex: TEXCOORD0;
};
struct VsosQuad{float4 pos: SV_POSITION;float2 tex: TEXCOORD0;float3 viewDir: TEXCOORD1;
};
#11.0
![Page 12: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/12.jpg)
fx/envmapped.fxfloat4x4 viewDirMatrix;
VsosQuad vsQuad(IaosQuad input){VsosQuad output = (VsosQuad)0;
output.pos = input.pos; float4 hWorldPosMinusEye = mul(input.pos, viewDirMatrix);
hWorldPosMinusEye /= hWorldPosMinusEye.w; output.viewDir = hWorldPosMinusEye.xyz;output.tex = input.tex;
return output;}
#11.1
![Page 13: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/13.jpg)
fx/envmapped.fxfloat4 psBackground(VsosQuad input) : SV_Target{return envTexture.Sample(linearSampler, input.viewDir);
}
#11.1
![Page 14: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/14.jpg)
fx/envmapped.fx
technique11 envmapped{
pass envmapped{
SetVertexShader ( CompileShader( vs_5_0, vsTrafo() ) );
SetPixelShader( CompileShader( ps_5_0, psEnvMapped() ) );}pass background{
SetVertexShader ( CompileShader( vs_5_0, vsQuad() ) );
SetPixelShader( CompileShader( ps_5_0, psBackground() ) );
}}
#11.1
![Page 15: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/15.jpg)
Game.hclass Game {Egg::Mesh::Shaded::P backgroundQuad;
#12.3
![Page 16: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/16.jpg)
Game.cpp//createResourcesEgg::Mesh::Indexed::P indexedQuad = Egg::Mesh::Indexed::createQuad(
device);ID3DX11EffectPass* backgroundPass = effect->GetTechniqueByName("envmapped")->GetPassByName("background");
Egg::Mesh::Material::P backgroundMaterial = Egg::Mesh::Material::create(
backgroundPass, 0);backgroundQuad = binder-> bindMaterial(backgroundMaterial, indexedQuad);
#12.4
![Page 17: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/17.jpg)
Game.cpp//releaseResourcesbackgroundQuad.reset();
#12.5
![Page 18: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/18.jpg)
DxaEnvMapped.cpp// rendereffect->GetVariableByName("viewDirMatrix")->AsMatrix()
->SetMatrix( (float*)&firstPersonCam->getViewDirMatrix() );
shadedMesh->draw(context);
backgroundQuad->draw(context);
#12.6
![Page 19: Environment mapping Szécsi László. copy-paste-rename gg007-Texture folder vcxproj, filters átnevezés solution/add existing project rename project working](https://reader036.vdocuments.us/reader036/viewer/2022070307/551b1d515503462e578b6128/html5/thumbnails/19.jpg)
Háttér kész