MCPcopy Create free account
hub / github.com/Kitware/VTK / GetNoiseTextureUnit

Method GetNoiseTextureUnit

Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx:3036–3082  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

3034
3035//------------------------------------------------------------------------------
3036int vtkOpenGLRenderWindow::GetNoiseTextureUnit()
3037{
3038 if (!this->NoiseTextureObject)
3039 {
3040 this->NoiseTextureObject = vtkTextureObject::New();
3041 this->NoiseTextureObject->SetContext(this);
3042 }
3043
3044 if (this->NoiseTextureObject->GetHandle() == 0)
3045 {
3046 vtkNew<vtkJPEGReader> imgReader;
3047
3048 vtkNew<vtkMemoryResourceStream> stream;
3049 stream->SetBuffer(BlueNoiseTexture64x64, sizeof(BlueNoiseTexture64x64));
3050 imgReader->SetStream(stream);
3051 imgReader->Update();
3052 vtkImageData* textureReader = imgReader->GetOutput();
3053
3054 constexpr int bufferSize = 64 * 64;
3055 float* noiseTextureData = new float[bufferSize];
3056 for (int i = 0; i < bufferSize; i++)
3057 {
3058 int const x = i % 64;
3059 int const y = i / 64;
3060 noiseTextureData[i] = textureReader->GetScalarComponentAsFloat(x, y, 0, 0) / 255.0f;
3061 }
3062
3063 // Prepare texture
3064 this->NoiseTextureObject->Create2DFromRaw(64, 64, 1, VTK_FLOAT, noiseTextureData);
3065
3066 this->NoiseTextureObject->SetWrapS(vtkTextureObject::Repeat);
3067 this->NoiseTextureObject->SetWrapT(vtkTextureObject::Repeat);
3068 this->NoiseTextureObject->SetMagnificationFilter(vtkTextureObject::Nearest);
3069 this->NoiseTextureObject->SetMinificationFilter(vtkTextureObject::Nearest);
3070 delete[] noiseTextureData;
3071 }
3072
3073 int result = this->GetTextureUnitForTexture(this->NoiseTextureObject);
3074
3075 if (result >= 0)
3076 {
3077 return result;
3078 }
3079
3080 this->NoiseTextureObject->Activate();
3081 return this->GetTextureUnitForTexture(this->NoiseTextureObject);
3082}
3083
3084//------------------------------------------------------------------------------
3085void vtkOpenGLRenderWindow::Render()

Callers 3

RenderSSAOMethod · 0.80
ExecuteMethod · 0.80

Calls 11

Create2DFromRawMethod · 0.80
NewFunction · 0.50
SetContextMethod · 0.45
GetHandleMethod · 0.45
SetBufferMethod · 0.45
SetStreamMethod · 0.45
UpdateMethod · 0.45
GetOutputMethod · 0.45
ActivateMethod · 0.45

Tested by

no test coverage detected