VTK  9.6.20260204
vtkWebGPULight.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
10
11#ifndef vtkWebGPULight_h
12#define vtkWebGPULight_h
13
14#include "vtkLight.h"
15
16#include "vtkRenderingWebGPUModule.h" // For export macro
17#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
18
19VTK_ABI_NAMESPACE_BEGIN
20class vtkRenderer;
21class vtkCamera;
23class VTKRENDERINGWEBGPU_EXPORT VTK_MARSHALAUTO vtkWebGPULight : public vtkLight
24{
25public:
29 vtkTypeMacro(vtkWebGPULight, vtkLight);
30 void PrintSelf(ostream& os, vtkIndent indent) override;
31
33 inline const void* GetCachedLightInformation() { return &(this->CachedLightInfo); }
34 static std::size_t GetCacheSizeBytes() { return sizeof(LightInfo); }
35
36 void Render(vtkRenderer*, int) override;
37
38protected:
39 vtkWebGPULight() = default;
40 ~vtkWebGPULight() override = default;
41
42 struct LightInfo
43 {
44 vtkTypeUInt8 Pad[12] = {}; // so that Type begins at n modulo 16 byte. LightCount,
45 // a 4-byte integer is the first element in lights ssbo.
46 // 0 : deferred, 1 : headlight, 2 : lightkit, 3 : positional
47 vtkTypeUInt32 Type = 0;
48 // 0 : not positional, 1 : positional
49 vtkTypeUInt32 Positional = 0;
50 vtkTypeFloat32 ConeAngle = 0;
51 vtkTypeFloat32 Exponent = 0;
52 vtkTypeFloat32 Color[4] = {};
53 vtkTypeFloat32 DirectionVC[4] = {}; // normalized
54 vtkTypeFloat32 PositionVC[4] = {};
55 vtkTypeFloat32 Attenuation[4] = {};
56 };
58
59private:
60 vtkWebGPULight(const vtkWebGPULight&) = delete;
61 void operator=(const vtkWebGPULight&) = delete;
62};
63
64#define vtkWebGPULight_OVERRIDE_ATTRIBUTES vtkWebGPULight::CreateOverrideAttributes()
65VTK_ABI_NAMESPACE_END
66#endif
a virtual camera for 3D rendering
Definition vtkCamera.h:151
a simple class to control print indentation
Definition vtkIndent.h:108
Attribute for vtkObjectFactory overrides.
abstract specification for renderers
void Render(vtkRenderer *, int) override
Abstract interface to renderer.
const void * GetCachedLightInformation()
void CacheLightInformation(vtkRenderer *renderer, vtkCamera *camera)
static vtkWebGPULight * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static std::size_t GetCacheSizeBytes()
~vtkWebGPULight() override=default
static vtkOverrideAttribute * CreateOverrideAttributes()
vtkWebGPULight()=default
LightInfo CachedLightInfo
vtkTypeFloat32 DirectionVC[4]
vtkTypeFloat32 PositionVC[4]
vtkTypeFloat32 Attenuation[4]
vtkTypeFloat32 Color[4]
#define VTK_MARSHALAUTO
#define VTK_NEWINSTANCE