raSystem  1.0 bata
raProceduralMaterial.cpp
Go to the documentation of this file.
1 #include "..\include\raMain.h"
2 
3 namespace System
4 {
6  LPCSTR techniquename, int colorsSelection) : raMaterial(dx,
7  "raEffects\\Noise.fx", techniquename)
8  {
9  m_pFreqVariable = NULL;
10  m_Freq = frequenz;
11  m_Bias = 0.5f;
12 
15 
16  m_pHeightTexture = NULL;
17  m_pHeightTextureSRV = NULL;
18  m_ptxHeight = NULL;
19  m_ColorsSelection = colorsSelection;
20  }
21 
23  int frequenz, LPCSTR effectFilename,
24  LPCSTR techniquename, int colorsSelection): raMaterial(dx,
25  effectFilename, techniquename)
26  {
27  m_pFreqVariable = NULL;
28  m_Freq = frequenz;
29  m_Bias = 0.4f;
30 
33 
34  m_pHeightTexture = NULL;
35  m_pHeightTextureSRV = NULL;
36  m_ptxHeight = NULL;
37  m_ColorsSelection = colorsSelection;
38  }
39 
41  {
42  for(int i = 0; i < 256; i++)
43  {
44  m_pPermutations[i] = rand() % 8;
45  }
46 
48  m_pPermutationsVariable->SetIntArray(m_pPermutations, 0, 256); //muss nicht in jedem Frame neu gemacht werden
49  }
50 
52  {
54 
56  GetVariableByName("g_freq")->AsScalar();
57 
59  GetVariableByName("g_bias")->AsScalar();
60 
62  GetVariableByName("g_indices" )->AsScalar();
63  m_pPermutationsVariable->SetIntArray(m_pPermutations, 0, 256); //muss nicht in jedem Frame neu gemacht werden
64 
67  GetVariableByName("g_txColorsFromHeight" )->AsShaderResource();
68  m_ptxHeight->SetResource(m_pHeightTextureSRV);
69 
70  return true;
71  }
72 
74  {
78 
79  return true;
80  }
81 
83  {
84  m_pFreqVariable->SetInt(m_Freq);
85  m_pBiasVariable->SetFloat(m_Bias);
86  }
87 
89  {
90  raColor data[5];
91  switch(m_ColorsSelection)
92  {
93  case 0:
94  {
95  //Mond (weiss)
96  data[0] = raColor(1.0f, 1.0f, 1.0f, 1.0f);
97  data[1] = raColor(1.0f, 1.0f, 1.0f, 1.0f);
98  data[2] = raColor(1.0f, 1.0f, 1.0f, 1.0f);
99  data[3] = raColor(1.0f, 1.0f, 1.0f, 1.0f);
100  data[4] = raColor(1.0f, 1.0f, 1.0f, 1.0f);
101  }
102  break;
103  case 3:
104  {
105  //Mars
106  data[0] = raColor(0.6f, 0.5f, 0.4f, 1.0f);
107  data[1] = raColor(0.6f, 0.25f, 0.2f, 1.0f);
108  data[2] = raColor(0.6f, 0.4f, 0.05f, 1.0f);
109  data[3] = raColor(0.6f, 0.4f, 0.4f, 1.0f);
110  data[4] = raColor(0.9f, 0.8f, 0.7f, 1.0f);
111  }
112  break;
113  case 4:
114  {
115  //Wolken
116  data[0] = raColor(0.1f, 0.0f, 0.9f, 1.0f); //hellblau
117  data[1] = raColor(0.0f, 0.0f, 0.9f, 1.0f); //hellblau
118  data[2] = raColor(0.9f, 0.9f, 1.0f, 1.0f); //hellblau
119  data[3] = raColor(0.9f, 0.9f, 0.9f, 1.0f); //schneeweiß data[4] = raColor(0.7f, 0.7f, 0.7f, 1.0f); //hellgrau } break; default: { //Erde data[0] = raColor(0.0f, 0.0f, 0.8f, 1.0f); //blau data[1] = raColor(0.0f, 0.2f, 0.6f, 1.0f); //blau data[2] = raColor(0.0f, 0.5f, 0.05f, 1.0f); //grün data[3] = raColor(0.5f, 0.4f, 0.4f, 1.0f); //braun data[4] = raColor(0.9f, 0.9f, 0.9f, 1.0f); //schneeweiß } break; } D3D11_TEXTURE1D_DESC dstex; dstex.Width = 5; dstex.MipLevels = 1; dstex.Format = DXGI_FORMAT_R32G32B32A32_FLOAT; dstex.Usage = D3D11_USAGE_DEFAULT; dstex.BindFlags = D3D11_BIND_SHADER_RESOURCE; dstex.CPUAccessFlags = 0; dstex.MiscFlags = 0; dstex.ArraySize = 1; D3D11_SUBRESOURCE_DATA InitData; InitData.pSysMem = (float*) data; InitData.SysMemPitch = 4 * 4 * sizeof(float); InitData.SysMemSlicePitch = 4 * 4 * sizeof(float); m_dx->GetDevice()->CreateTexture1D(&dstex, &InitData, &m_pHeightTexture); D3D11_SHADER_RESOURCE_VIEW_DESC SRVDesc; ZeroMemory( &SRVDesc, sizeof(SRVDesc) ); SRVDesc.Format = dstex.Format; SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE1D; SRVDesc.Texture2D.MipLevels = dstex.MipLevels; m_dx->GetDevice()->CreateShaderResourceView(m_pHeightTexture, &SRVDesc, &m_pHeightTextureSRV); } };
120  data[4] = raColor(0.7f, 0.7f, 0.7f, 1.0f); //hellgrau
121  }
122  break;
123  default:
124  {
125  //Erde
126  data[0] = raColor(0.0f, 0.0f, 0.8f, 1.0f); //blau
127  data[1] = raColor(0.0f, 0.2f, 0.6f, 1.0f); //blau
128  data[2] = raColor(0.0f, 0.5f, 0.05f, 1.0f); //grün
129  data[3] = raColor(0.5f, 0.4f, 0.4f, 1.0f); //braun
130  data[4] = raColor(0.9f, 0.9f, 0.9f, 1.0f); //schneeweiß } break; } D3D11_TEXTURE1D_DESC dstex; dstex.Width = 5; dstex.MipLevels = 1; dstex.Format = DXGI_FORMAT_R32G32B32A32_FLOAT; dstex.Usage = D3D11_USAGE_DEFAULT; dstex.BindFlags = D3D11_BIND_SHADER_RESOURCE; dstex.CPUAccessFlags = 0; dstex.MiscFlags = 0; dstex.ArraySize = 1; D3D11_SUBRESOURCE_DATA InitData; InitData.pSysMem = (float*) data; InitData.SysMemPitch = 4 * 4 * sizeof(float); InitData.SysMemSlicePitch = 4 * 4 * sizeof(float); m_dx->GetDevice()->CreateTexture1D(&dstex, &InitData, &m_pHeightTexture); D3D11_SHADER_RESOURCE_VIEW_DESC SRVDesc; ZeroMemory( &SRVDesc, sizeof(SRVDesc) ); SRVDesc.Format = dstex.Format; SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE1D; SRVDesc.Texture2D.MipLevels = dstex.MipLevels; m_dx->GetDevice()->CreateShaderResourceView(m_pHeightTexture, &SRVDesc, &m_pHeightTextureSRV); } };
131  }
132  break;
133  }
134  D3D11_TEXTURE1D_DESC dstex;
135  dstex.Width = 5;
136  dstex.MipLevels = 1;
137  dstex.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
138  dstex.Usage = D3D11_USAGE_DEFAULT;
139  dstex.BindFlags = D3D11_BIND_SHADER_RESOURCE;
140  dstex.CPUAccessFlags = 0;
141  dstex.MiscFlags = 0;
142  dstex.ArraySize = 1;
143  D3D11_SUBRESOURCE_DATA InitData;
144  InitData.pSysMem = (float*) data;
145  InitData.SysMemPitch = 4 * 4 * sizeof(float);
146  InitData.SysMemSlicePitch = 4 * 4 * sizeof(float);
147  m_dx->GetDevice()->CreateTexture1D(&dstex, &InitData, &m_pHeightTexture);
148 
149  D3D11_SHADER_RESOURCE_VIEW_DESC SRVDesc;
150  ZeroMemory( &SRVDesc, sizeof(SRVDesc) );
151  SRVDesc.Format = dstex.Format;
152  SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE1D;
153  SRVDesc.Texture2D.MipLevels = dstex.MipLevels;
154  m_dx->GetDevice()->CreateShaderResourceView(m_pHeightTexture, &SRVDesc,
156  }
157 };
ID3D11ShaderResourceView * m_pHeightTextureSRV
virtual bool Create()
Definition: raMaterial.cpp:56
virtual void CreateHeightTexture()
Definition: raColor.h:5
raProceduralMaterial(raSmartPointer< raDirectX > dx, int frequenz, LPCSTR techniquename, int colorsSelection=5)
ID3D11Device * GetDevice(void)
Definition: raDirectX.h:29
ID3DX11Effect * m_pEffect
Definition: raMaterial.h:57
ID3DX11EffectScalarVariable * m_pFreqVariable
ID3DX11EffectScalarVariable * m_pPermutationsVariable
ID3DX11EffectShaderResourceVariable * m_ptxHeight
ID3D11Texture1D * m_pHeightTexture
raSmartPointer< raDirectX > m_dx
Definition: raMaterial.h:53
#define SAFE_RELEASE(p)
Definition: d3dxGlobal.h:22
ID3DX11EffectScalarVariable * m_pBiasVariable
virtual bool Destroy()
Definition: raMaterial.cpp:99