mirror of
https://github.com/minetest/irrlicht.git
synced 2025-08-02 23:30:38 +02:00
bin
doc
examples
include
lib
media
scripts
source
Irrlicht
Irrlicht.xcodeproj
KHR
aesGladman
bzip2
jpeglib
libpng
lzma
zlib
BuiltInFont.h
C3DSMeshFileLoader.cpp
C3DSMeshFileLoader.h
CAnimatedMeshHalfLife.cpp
CAnimatedMeshHalfLife.h
CAnimatedMeshMD2.cpp
CAnimatedMeshMD2.h
CAnimatedMeshMD3.cpp
CAnimatedMeshMD3.h
CAnimatedMeshSceneNode.cpp
CAnimatedMeshSceneNode.h
CAttributeImpl.h
CAttributes.cpp
CAttributes.h
CB3DMeshFileLoader.cpp
CB3DMeshFileLoader.h
CB3DMeshWriter.cpp
CB3DMeshWriter.h
CBSPMeshFileLoader.cpp
CBSPMeshFileLoader.h
CBillboardSceneNode.cpp
CBillboardSceneNode.h
CBlit.h
CBoneSceneNode.cpp
CBoneSceneNode.h
CBufferRenderNode.h
CBurningShader_Raster_Reference.cpp
CCSMLoader.cpp
CCSMLoader.h
CCameraSceneNode.cpp
CCameraSceneNode.h
CColladaFileLoader.cpp
CColladaFileLoader.h
CColladaMeshWriter.cpp
CColladaMeshWriter.h
CColorConverter.cpp
CColorConverter.h
CCubeSceneNode.cpp
CCubeSceneNode.h
CD3D9Driver.cpp
CD3D9Driver.h
CD3D9HLSLMaterialRenderer.cpp
CD3D9HLSLMaterialRenderer.h
CD3D9MaterialRenderer.h
CD3D9NormalMapRenderer.cpp
CD3D9NormalMapRenderer.h
CD3D9ParallaxMapRenderer.cpp
CD3D9ParallaxMapRenderer.h
CD3D9RenderTarget.cpp
CD3D9RenderTarget.h
CD3D9ShaderMaterialRenderer.cpp
CD3D9ShaderMaterialRenderer.h
CD3D9Texture.cpp
CD3D9Texture.h
CDMFLoader.cpp
CDMFLoader.h
CDefaultGUIElementFactory.cpp
CDefaultGUIElementFactory.h
CDefaultSceneNodeAnimatorFactory.cpp
CDefaultSceneNodeAnimatorFactory.h
CDefaultSceneNodeFactory.cpp
CDefaultSceneNodeFactory.h
CDepthBuffer.cpp
CDepthBuffer.h
CDummyTransformationSceneNode.cpp
CDummyTransformationSceneNode.h
CEmptySceneNode.cpp
CEmptySceneNode.h
CFPSCounter.cpp
CFPSCounter.h
CFileList.cpp
CFileList.h
CFileSystem.cpp
CFileSystem.h
CGLXManager.cpp
CGLXManager.h
CGUIButton.cpp
CGUIButton.h
CGUICheckBox.cpp
CGUICheckBox.h
CGUIColorSelectDialog.cpp
CGUIColorSelectDialog.h
CGUIComboBox.cpp
CGUIComboBox.h
CGUIContextMenu.cpp
CGUIContextMenu.h
CGUIEditBox.cpp
CGUIEditBox.h
CGUIEnvironment.cpp
CGUIEnvironment.h
CGUIFileOpenDialog.cpp
CGUIFileOpenDialog.h
CGUIFont.cpp
CGUIFont.h
CGUIImage.cpp
CGUIImage.h
CGUIImageList.cpp
CGUIImageList.h
CGUIInOutFader.cpp
CGUIInOutFader.h
CGUIListBox.cpp
CGUIListBox.h
CGUIMenu.cpp
CGUIMenu.h
CGUIMeshViewer.cpp
CGUIMeshViewer.h
CGUIMessageBox.cpp
CGUIMessageBox.h
CGUIModalScreen.cpp
CGUIModalScreen.h
CGUIProfiler.cpp
CGUIProfiler.h
CGUIScrollBar.cpp
CGUIScrollBar.h
CGUISkin.cpp
CGUISkin.h
CGUISpinBox.cpp
CGUISpinBox.h
CGUISpriteBank.cpp
CGUISpriteBank.h
CGUIStaticText.cpp
CGUIStaticText.h
CGUITabControl.cpp
CGUITabControl.h
CGUITable.cpp
CGUITable.h
CGUIToolBar.cpp
CGUIToolBar.h
CGUITreeView.cpp
CGUITreeView.h
CGUIWindow.cpp
CGUIWindow.h
CGeometryCreator.cpp
CGeometryCreator.h
CImage.cpp
CImage.h
CImageLoaderBMP.cpp
CImageLoaderBMP.h
CImageLoaderDDS.cpp
CImageLoaderDDS.h
CImageLoaderJPG.cpp
CImageLoaderJPG.h
CImageLoaderPCX.cpp
CImageLoaderPCX.h
CImageLoaderPNG.cpp
CImageLoaderPNG.h
CImageLoaderPPM.cpp
CImageLoaderPPM.h
CImageLoaderPSD.cpp
CImageLoaderPSD.h
CImageLoaderPVR.cpp
CImageLoaderPVR.h
CImageLoaderRGB.cpp
CImageLoaderRGB.h
CImageLoaderTGA.cpp
CImageLoaderTGA.h
CImageLoaderWAL.cpp
CImageLoaderWAL.h
CImageWriterBMP.cpp
CImageWriterBMP.h
CImageWriterJPG.cpp
CImageWriterJPG.h
CImageWriterPCX.cpp
CImageWriterPCX.h
CImageWriterPNG.cpp
CImageWriterPNG.h
CImageWriterPPM.cpp
CImageWriterPPM.h
CImageWriterPSD.cpp
CImageWriterPSD.h
CImageWriterTGA.cpp
CImageWriterTGA.h
CIrrDeviceConsole.cpp
CIrrDeviceConsole.h
CIrrDeviceFB.cpp
CIrrDeviceFB.h
CIrrDeviceLinux.cpp
CIrrDeviceLinux.h
CIrrDeviceOSX.h
CIrrDeviceOSX.mm
CIrrDeviceSDL.cpp
CIrrDeviceSDL.h
CIrrDeviceStub.cpp
CIrrDeviceStub.h
CIrrDeviceWin32.cpp
CIrrDeviceWin32.h
CIrrMeshFileLoader.cpp
CIrrMeshFileLoader.h
CIrrMeshWriter.cpp
CIrrMeshWriter.h
CLMTSMeshFileLoader.cpp
CLMTSMeshFileLoader.h
CLWOMeshFileLoader.cpp
CLWOMeshFileLoader.h
CLightSceneNode.cpp
CLightSceneNode.h
CLimitReadFile.cpp
CLimitReadFile.h
CLogger.cpp
CLogger.h
CMD2MeshFileLoader.cpp
CMD2MeshFileLoader.h
CMD3MeshFileLoader.cpp
CMD3MeshFileLoader.h
CMS3DMeshFileLoader.cpp
CMS3DMeshFileLoader.h
CMY3DHelper.h
CMY3DMeshFileLoader.cpp
CMY3DMeshFileLoader.h
CMemoryFile.cpp
CMemoryFile.h
CMeshCache.cpp
CMeshCache.h
CMeshManipulator.cpp
CMeshManipulator.h
CMeshSceneNode.cpp
CMeshSceneNode.h
CMeshTextureLoader.cpp
CMeshTextureLoader.h
CMetaTriangleSelector.cpp
CMetaTriangleSelector.h
CMountPointReader.cpp
CMountPointReader.h
CNPKReader.cpp
CNPKReader.h
CNSOGLManager.h
CNSOGLManager.mm
CNullDriver.cpp
CNullDriver.h
COBJMeshFileLoader.cpp
COBJMeshFileLoader.h
COBJMeshWriter.cpp
COBJMeshWriter.h
COCTLoader.cpp
COCTLoader.h
COSOperator.cpp
COSOperator.h
COctreeSceneNode.cpp
COctreeSceneNode.h
COctreeTriangleSelector.cpp
COctreeTriangleSelector.h
COgreMeshFileLoader.cpp
COgreMeshFileLoader.h
COpenGLCacheHandler.cpp
COpenGLCacheHandler.h
COpenGLCommon.h
COpenGLCoreCacheHandler.h
COpenGLCoreFeature.h
COpenGLCoreRenderTarget.h
COpenGLCoreTexture.h
COpenGLDriver.cpp
COpenGLDriver.h
COpenGLExtensionHandler.cpp
COpenGLExtensionHandler.h
COpenGLMaterialRenderer.h
COpenGLNormalMapRenderer.cpp
COpenGLNormalMapRenderer.h
COpenGLParallaxMapRenderer.cpp
COpenGLParallaxMapRenderer.h
COpenGLSLMaterialRenderer.cpp
COpenGLSLMaterialRenderer.h
COpenGLShaderMaterialRenderer.cpp
COpenGLShaderMaterialRenderer.h
CPLYMeshFileLoader.cpp
CPLYMeshFileLoader.h
CPLYMeshWriter.cpp
CPLYMeshWriter.h
CPakReader.cpp
CPakReader.h
CParticleAnimatedMeshSceneNodeEmitter.cpp
CParticleAnimatedMeshSceneNodeEmitter.h
CParticleAttractionAffector.cpp
CParticleAttractionAffector.h
CParticleBoxEmitter.cpp
CParticleBoxEmitter.h
CParticleCylinderEmitter.cpp
CParticleCylinderEmitter.h
CParticleFadeOutAffector.cpp
CParticleFadeOutAffector.h
CParticleGravityAffector.cpp
CParticleGravityAffector.h
CParticleMeshEmitter.cpp
CParticleMeshEmitter.h
CParticlePointEmitter.cpp
CParticlePointEmitter.h
CParticleRingEmitter.cpp
CParticleRingEmitter.h
CParticleRotationAffector.cpp
CParticleRotationAffector.h
CParticleScaleAffector.cpp
CParticleScaleAffector.h
CParticleSphereEmitter.cpp
CParticleSphereEmitter.h
CParticleSystemSceneNode.cpp
CParticleSystemSceneNode.h
CProfiler.cpp
CProfiler.h
CQ3LevelMesh.cpp
CQ3LevelMesh.h
CQuake3ShaderSceneNode.cpp
CQuake3ShaderSceneNode.h
CReadFile.cpp
CReadFile.h
CSMFMeshFileLoader.cpp
CSMFMeshFileLoader.h
CSTLMeshFileLoader.cpp
CSTLMeshFileLoader.h
CSTLMeshWriter.cpp
CSTLMeshWriter.h
CSceneCollisionManager.cpp
CSceneCollisionManager.h
CSceneLoaderIrr.cpp
CSceneLoaderIrr.h
CSceneManager.cpp
CSceneManager.h
CSceneNodeAnimatorCameraFPS.cpp
CSceneNodeAnimatorCameraFPS.h
CSceneNodeAnimatorCameraMaya.cpp
CSceneNodeAnimatorCameraMaya.h
CSceneNodeAnimatorCollisionResponse.cpp
CSceneNodeAnimatorCollisionResponse.h
CSceneNodeAnimatorDelete.cpp
CSceneNodeAnimatorDelete.h
CSceneNodeAnimatorFlyCircle.cpp
CSceneNodeAnimatorFlyCircle.h
CSceneNodeAnimatorFlyStraight.cpp
CSceneNodeAnimatorFlyStraight.h
CSceneNodeAnimatorFollowSpline.cpp
CSceneNodeAnimatorFollowSpline.h
CSceneNodeAnimatorRotation.cpp
CSceneNodeAnimatorRotation.h
CSceneNodeAnimatorTexture.cpp
CSceneNodeAnimatorTexture.h
CShadowVolumeSceneNode.cpp
CShadowVolumeSceneNode.h
CSkinnedMesh.cpp
CSkinnedMesh.h
CSkyBoxSceneNode.cpp
CSkyBoxSceneNode.h
CSkyDomeSceneNode.cpp
CSkyDomeSceneNode.h
CSoftware2MaterialRenderer.h
CSoftwareDriver.cpp
CSoftwareDriver.h
CSoftwareDriver2.cpp
CSoftwareDriver2.h
CSoftwareTexture.cpp
CSoftwareTexture.h
CSoftwareTexture2.cpp
CSoftwareTexture2.h
CSphereSceneNode.cpp
CSphereSceneNode.h
CTRFlat.cpp
CTRFlatWire.cpp
CTRGouraud.cpp
CTRGouraud2.cpp
CTRGouraudAlphaNoZ2.cpp
CTRGouraudNoZ2.cpp
CTRGouraudWire.cpp
CTRNormalMap.cpp
CTRParallaxMap.cpp
CTRStencilShadow.cpp
CTRTextureBlend.cpp
CTRTextureDetailMap2.cpp
CTRTextureFlat.cpp
CTRTextureFlatWire.cpp
CTRTextureGouraud.cpp
CTRTextureGouraud.h
CTRTextureGouraud2.cpp
CTRTextureGouraudAdd.cpp
CTRTextureGouraudAdd2.cpp
CTRTextureGouraudAddNoZ2.cpp
CTRTextureGouraudAlpha.cpp
CTRTextureGouraudAlphaNoZ.cpp
CTRTextureGouraudNoZ.cpp
CTRTextureGouraudNoZ2.cpp
CTRTextureGouraudVertexAlpha2.cpp
CTRTextureGouraudWire.cpp
CTRTextureLightMap2_Add.cpp
CTRTextureLightMap2_M1.cpp
CTRTextureLightMap2_M2.cpp
CTRTextureLightMap2_M4.cpp
CTRTextureLightMapGouraud2_M4.cpp
CTRTextureWire2.cpp
CTR_transparent_reflection_2_layer.cpp
CTarReader.cpp
CTarReader.h
CTerrainSceneNode.cpp
CTerrainSceneNode.h
CTerrainTriangleSelector.cpp
CTerrainTriangleSelector.h
CTextSceneNode.cpp
CTextSceneNode.h
CTimer.h
CTriangleBBSelector.cpp
CTriangleBBSelector.h
CTriangleSelector.cpp
CTriangleSelector.h
CVideoModeList.cpp
CVideoModeList.h
CVolumeLightSceneNode.cpp
CVolumeLightSceneNode.h
CWADReader.cpp
CWADReader.h
CWGLManager.cpp
CWGLManager.h
CWaterSurfaceSceneNode.cpp
CWaterSurfaceSceneNode.h
CWriteFile.cpp
CWriteFile.h
CXMLReader.cpp
CXMLReader.h
CXMLReaderImpl.h
CXMLWriter.cpp
CXMLWriter.h
CXMeshFileLoader.cpp
CXMeshFileLoader.h
CZBuffer.cpp
CZBuffer.h
CZipReader.cpp
CZipReader.h
EProfileIDs.h
IAttribute.h
IBurningShader.cpp
IBurningShader.h
IDepthBuffer.h
IImagePresenter.h
ISceneNodeAnimatorFinishing.h
ITriangleRenderer.h
IZBuffer.h
Irrlicht-gcc.cbp
Irrlicht.cpp
Irrlicht.rc
Irrlicht.ruleset
Irrlicht10.0.sln
Irrlicht10.0.vcxproj
Irrlicht10.0.vcxproj.filters
Irrlicht11.0.sln
Irrlicht11.0.vcxproj
Irrlicht11.0.vcxproj.filters
Irrlicht12.0.sln
Irrlicht12.0.vcxproj
Irrlicht12.0.vcxproj.filters
Irrlicht14.0.sln
Irrlicht14.0.vcxproj
Irrlicht14.0.vcxproj.filters
Irrlicht15.0.sln
Irrlicht15.0.vcxproj
Irrlicht15.0.vcxproj.filters
Irrlicht16.0.sln
Irrlicht16.0.vcxproj
Irrlicht16.0.vcxproj.filters
Irrlicht17.0.sln
Irrlicht17.0.vcxproj
Irrlicht17.0.vcxproj.filters
Makefile
Octree.h
S2DVertex.h
S4DVertex.h
SB3DStructs.h
SConstruct
SoftwareDriver2_compile_config.h
SoftwareDriver2_helper.h
builtInFont.bmp
burning_shader_color.cpp
burning_shader_color_fraq.h
burning_shader_compile_fragment_default.h
burning_shader_compile_fragment_end.h
burning_shader_compile_fragment_start.h
burning_shader_compile_start.h
burning_shader_compile_triangle.h
burning_shader_compile_verify.h
dmfsupport.h
glext.h
glxext.h
irrMathFastCompat.h
irrXML.cpp
leakHunter.cpp
os.cpp
os.h
resource.h
source.txt
utf8.cpp
wglext.h
source.txt
tests
tools
changes.txt
readme.txt
Basically now the same as GLSL material renderer already worked. Before it was using IMaterialRendererServices from CD3D9Driver, but there had been several problems with that: - The d3d9 driver called functions through the CD3D9MaterialRenderer interface, but CD3D9HLSLMaterialRenderer is not (or maybe no longer?) derived from that class. Reason it still worked was accidental luck - the same functions had been in the same order and due to casts the compiler wasn't noticing it was calling the functions of an unrelated class. - It was making calls to set shader constants depend on the currently set material in the driver. Which was not necessary and just prevents we can use the IMaterialRendererServices interface without setting the material first (how I found the bug). Still some problems left for now: - There's 2 ways to call shader constants. One seems to be only used by hi-level shaders which links constants to the shader. The the other only by low-level shaders which uses global (shader independent) registers. So maybe this should be 2 interfaces? But not certain, glsl material renderer seems to prevent setting the global registers, but maybe those could be used additionally? I've still allowed it for now in HLSL, just in case it had it's uses. - setBasicRenderStates probably should not be in IMaterialRendererServices. I'm not seeing any case where this isn't just passed on to the driver. And all classes using it have access to the driver unless I missed one. So probably can just avoid that additional indirection and kick that out of the IMaterialRendererServices interface. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6464 dfc29bdd-3216-0410-991c-e03cc46cb475
56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
// Copyright (C) 2002-2012 Nikolaus Gebhardt
|
|
// This file is part of the "Irrlicht Engine".
|
|
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
|
|
|
#ifndef IRR_C_D3D9_NORMAL_MAPMATERIAL_RENDERER_H_INCLUDED
|
|
#define IRR_C_D3D9_NORMAL_MAPMATERIAL_RENDERER_H_INCLUDED
|
|
|
|
#include "IrrCompileConfig.h"
|
|
#ifdef _IRR_WINDOWS_
|
|
|
|
#ifdef _IRR_COMPILE_WITH_DIRECT3D_9_
|
|
#if defined(__BORLANDC__) || defined (__BCPLUSPLUS__)
|
|
#include "irrMath.h" // needed by borland for sqrtf define
|
|
#endif
|
|
#include <d3d9.h>
|
|
|
|
#include "CD3D9ShaderMaterialRenderer.h"
|
|
#include "IShaderConstantSetCallBack.h"
|
|
|
|
namespace irr
|
|
{
|
|
namespace video
|
|
{
|
|
|
|
//! Renderer for normal maps
|
|
class CD3D9NormalMapRenderer :
|
|
public CD3D9ShaderMaterialRenderer, IShaderConstantSetCallBack
|
|
{
|
|
public:
|
|
|
|
CD3D9NormalMapRenderer(
|
|
IDirect3DDevice9* d3ddev, video::CD3D9Driver* driver,
|
|
s32& outMaterialTypeNr, IMaterialRenderer* baseMaterial);
|
|
|
|
~CD3D9NormalMapRenderer();
|
|
|
|
//! Called by the engine when the vertex and/or pixel shader constants for an
|
|
//! material renderer should be set.
|
|
virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData) IRR_OVERRIDE;
|
|
|
|
virtual bool OnRender(IMaterialRendererServices* service, E_VERTEX_TYPE vtxtype) IRR_OVERRIDE;
|
|
|
|
//! Returns the render capability of the material.
|
|
virtual s32 getRenderCapability() const IRR_OVERRIDE;
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
} // end namespace video
|
|
} // end namespace irr
|
|
|
|
#endif
|
|
#endif
|
|
#endif
|