Varjo Native Experimental SDK
Varjo_types_mr_experimental.h File Reference

Go to the source code of this file.

Data Structures

struct  varjo_TextureConfig
 
struct  varjo_ShaderParams_VideoPostProcess
 Post process shader info structure defining shader properties and inputs for video post process shader. More...
 
union  varjo_ShaderParams
 Wrapper for different types of shader parameters. More...
 
struct  varjo_ShaderConfig
 Shader configuration structure. More...
 
struct  varjo_GLTextureFormat
 
struct  varjo_ReconstructionConfig
 Environment 3D reconstruction configuration parameters. More...
 
struct  varjo_PointCloudPoint
 Data point which belongs to the 3D reconstruction. More...
 
struct  varjo_PointCloudSnapshotContent
 Point cloud snapshot content. More...
 
struct  varjo_PointCloudDeltaContent
 Point cloud delta content. More...
 
struct  varjo_VertexFormat
 Mesh vertex attribute formats. More...
 
struct  varjo_MeshReconstructionConfig
 Environment 3D reconstruction mesh configuration parameters. More...
 
struct  varjo_MeshChunkDescription
 Environment 3D reconstruction mesh chunk description. More...
 
union  varjo_MeshVertexPositionArray
 Supported attribute formats for mesh vertex colors. More...
 
union  varjo_MeshVertexColorArray
 Supported attribute formats for mesh vertex normals. More...
 
union  varjo_MeshVertexNormalArray
 Supported attribute formats for mesh vertex normals. More...
 
struct  varjo_MeshChunkContent
 Contents of a 3D reconstruction chunks. More...
 

Typedefs

typedef int64_t varjo_VideoDepthTestMode
 Video depth test mode constants. More...
 
typedef int64_t varjo_VideoDepthTestBehavior
 Video depth test behavior constants. More...
 
typedef int64_t varjo_ShaderType
 Post process shader type constants. More...
 
typedef int64_t varjo_ShaderFormat
 Post process shader format constants. More...
 
typedef int64_t varjo_ShaderInputLayout
 Post process shader input layout versioning for shader types. More...
 
typedef int64_t varjo_ShaderFlags_VideoPostProcess
 Post process shader input flags. More...
 
typedef uint32_t varjo_DXGITextureFormat
 
typedef int32_t varjo_ChunkContentsBufferId
 3D reconstruction constants. More...
 
typedef int64_t varjo_PointCloudSnapshotId
 Point cloud snapshot id. More...
 
typedef int64_t varjo_PointCloudSnapshotStatus
 Point cloud snapshot computation status. More...
 
typedef int64_t varjo_MeshChunkContentsBufferId
 3D reconstruction mesh constants. More...
 
typedef int64_t varjo_VertexAttribute
 

Variables

static const varjo_Error varjo_Error_InvalidShaderType = 10100
 Shader error codes. More...
 
static const varjo_Error varjo_Error_InvalidShaderFormat = 10101
 
static const varjo_Error varjo_Error_InvalidInputLayout = 10102
 
static const varjo_Error varjo_Error_InvalidComputeBlockSize = 10103
 
static const varjo_Error varjo_Error_InvalidSamplingMargin = 10104
 
static const varjo_Error varjo_Error_InvalidConstantBufferSize = 10105
 
static const varjo_Error varjo_Error_InvalidTextureDimensions = 10106
 
static const varjo_Error varjo_Error_InvalidTextureFormat = 10107
 
static const varjo_Error varjo_Error_InvalidTextureIndex = 10108
 
static const varjo_Error varjo_Error_TextureNotAcquired = 10109
 
static const varjo_Error varjo_Error_TexturesLocked = 10110
 
static const varjo_Error varjo_Error_InvalidConstantBuffer = 10111
 
static const varjo_Error varjo_Error_RenderAPINotInitialized = 10112
 
static const varjo_Error varjo_Error_InvalidShaderFlags = 10113
 
static const varjo_Error varjo_Error_InvalidShaderSize = 10114
 
static const varjo_Error varjo_Error_InvalidShader = 10115
 
static const varjo_Error varjo_Error_InvalidIndexCount = 10116
 
static const varjo_Error varjo_Error_TextureLockFailed = 10117
 
static const varjo_Error varjo_Error_InvalidVideoDepthTestMode = 10201
 Video Depth Test error codes. More...
 
static const varjo_Error varjo_Error_InvalidVideoDepthTestRange = 10202
 
static const varjo_Error varjo_Error_ChunkContentsBufferAlreadyLocked = 10714
 3D reconstruction error codes. More...
 
static const varjo_Error varjo_Error_ChunkContentsBufferNotLocked = 10715
 
static const varjo_Error varjo_Error_ChunkContentsBufferInvalidId = 10716
 
static const varjo_Error varjo_Error_PointCloudSnapshotInvalidId = 10717
 
static const varjo_LockType varjo_LockType_VideoPostProcessShader = 1001
 Lock for video pass through post processing shader. More...
 
static const varjo_LockType varjo_LockType_VideoDepthTest = 1002
 Lock for video depth test modes and ranges. More...
 
static const varjo_VideoDepthTestMode varjo_VideoDepthTestMode_Full = 0
 Video depth test range is not limited. More...
 
static const varjo_VideoDepthTestMode varjo_VideoDepthTestMode_LimitedRange = 1
 Video depth test is limited to given range if no application provides depth test range through varjo_ViewExtensionDepthTestRange. More...
 
static const varjo_VideoDepthTestMode varjo_VideoDepthTestMode_ForcedRange = 2
 Depth testing is forced and limited to given range. More...
 
static const varjo_VideoDepthTestBehavior varjo_VideoDepthTestBehavior_PreferLayerRange = 0
 Prefer depth test range from application layer over video range. More...
 
static const varjo_VideoDepthTestBehavior varjo_VideoDepthTestBehavior_PreferVideoRange = 1
 Prefer video depth test range over application layer ranges. More...
 
static const varjo_VideoDepthTestBehavior varjo_VideoDepthTestBehavior_CombineRanges = 2
 Combine both video depth test range and application layer ranges. More...
 
static const varjo_ShaderType varjo_ShaderType_VideoPostProcess = 1
 
static const varjo_ShaderFormat varjo_ShaderFormat_None = 0
 
static const varjo_ShaderFormat varjo_ShaderFormat_DxComputeBlob = 1
 
static const varjo_ShaderInputLayout varjo_ShaderInputLayout_VideoPostProcess_V2 = 2
 This layout has these built-in inputs and outputs: More...
 
static const varjo_ShaderFlags_VideoPostProcess varjo_ShaderFlag_VideoPostProcess_None = 0
 
static const varjo_ChunkContentsBufferId varjo_ChunkContentsBufferId_Invalid = -1
 
static const varjo_PropertyKey varjo_PropertyKey_ReconstructionAvailable = 0xFF01
 3D reconstruction status properties. More...
 
static const int64_t varjo_PointCloudSnapshotId_Invalid = 0
 
static const int64_t varjo_PointCloudSnapshotStatus_Invalid = 0
 Snapshot does not exist or has been released. More...
 
static const int64_t varjo_PointCloudSnapshotStatus_Pending = 1
 Snapshot capture has not yet finished. More...
 
static const int64_t varjo_PointCloudSnapshotStatus_Ready = 2
 Snapshot is ready and can be accessed with GetPointCloudSnapshotContent. More...
 
static const varjo_MeshChunkContentsBufferId varjo_MeshChunkContentsBufferId_Invalid = -1
 
static const varjo_VertexAttribute varjo_VertexAttribute_float32 = 1
 

Data Structure Documentation

◆ varjo_TextureConfig

struct varjo_TextureConfig
Data Fields
varjo_TextureFormat format
uint64_t height
uint64_t width

◆ varjo_ShaderParams_VideoPostProcess

struct varjo_ShaderParams_VideoPostProcess

Post process shader info structure defining shader properties and inputs for video post process shader.

Data Fields
int64_t computeBlockSize Compute shader block size. Valid values: 8 or 16.
int64_t constantBufferSize Constant buffer size in bytes. Must be divisible by 16.
varjo_ShaderFlags_VideoPostProcess inputFlags Shader input flags.
int64_t samplingMargin Amount of lines left as margin for sampling kernel. Valid values [0, 64].
struct varjo_TextureConfig textures[16] Input texture configurations.

◆ varjo_ShaderParams

union varjo_ShaderParams

Wrapper for different types of shader parameters.

Data Fields
int64_t reserved[128] Reserved for future use.
struct varjo_ShaderParams_VideoPostProcess videoPostProcess Parameters for varjo_ShaderType_VideoPostProcess.

◆ varjo_ShaderConfig

struct varjo_ShaderConfig

Shader configuration structure.

Data Fields
varjo_ShaderFormat format Shader format.
varjo_ShaderInputLayout inputLayout Shader input layout version.
union varjo_ShaderParams params Shader parameters.

◆ varjo_GLTextureFormat

struct varjo_GLTextureFormat
Data Fields
uint32_t baseFormat Base texture format (GLenum type)
uint32_t internalFormat Internal texture format (GLenum type)

◆ varjo_ReconstructionConfig

struct varjo_ReconstructionConfig

Environment 3D reconstruction configuration parameters.

Data Fields
int32_t framerate Target number of reconstruction updates per second.
int32_t reserved[31]

◆ varjo_PointCloudPoint

struct varjo_PointCloudPoint

Data point which belongs to the 3D reconstruction.

Contains the following fields in a packed format:

Index: globally unique identifier for the point. Confidence: Integer confidence value for the point. Points with confidence of 0 are to be considered removed. Normal: Unit normal in world coordinates. Color: RGB color of the point. Position: position relative to the HMD tracking origin in meters. Radius: Radius of the point in meters.

Data Fields
uint32_t colorBG float16 / float16
uint32_t indexConfidence (index << 8) | (confidence & 0xFF);
uint32_t normalXY float16 / float16
uint32_t normalZcolorR float16 / float16
uint32_t positionXY float16 / float16
uint32_t positionZradius float16 / float16

◆ varjo_PointCloudSnapshotContent

struct varjo_PointCloudSnapshotContent

Point cloud snapshot content.

Contains state of the point cloud at one moment in time.

Data Fields
int32_t pointCount Number of points in the array.
struct varjo_PointCloudPoint * points Array of points.
int32_t sequenceNumber Sequence number measured in reconstruction iterations.
varjo_Nanoseconds timestamp Snapshot timestamp matching the latest VST frame used for updating the data.

◆ varjo_PointCloudDeltaContent

struct varjo_PointCloudDeltaContent

Point cloud delta content.

Contains changes in point cloud which have occurred after previous snapshot or delta.

Data Fields
int32_t changedPointCount Number of points in changedPoints array.
struct varjo_PointCloudPoint * changedPoints Array of points which have been updated.
int32_t maxSurfelIndex Maximum value of index field in any of the points.
int32_t removedPointCount Number of removed points in removedPointIds array.
int32_t * removedPointIds Array of point ids which have been removed.
int32_t sequenceNumber Sequence number measured in reconstruction iterations.
varjo_Nanoseconds timestamp Delta timestamp matching the latest VST frame used for updating the data.

◆ varjo_VertexFormat

struct varjo_VertexFormat

Mesh vertex attribute formats.

Data Fields
varjo_VertexAttribute color
varjo_VertexAttribute normal
varjo_VertexAttribute position
int64_t reserved[13]

◆ varjo_MeshReconstructionConfig

struct varjo_MeshReconstructionConfig

Environment 3D reconstruction mesh configuration parameters.

Data Fields
uint32_t chunksPerMeter Chunk resolution of x chunks per meter means each cubic meter is divided into x^3 chunks.
uint32_t maxChunks Maximum number of non-empty chunks that may exist simultaneously.
uint32_t maxTrianglesPerChunk Maximum number of triangles a mesh chunk may contain.
uint32_t maxVerticesPerChunk Maximum number of vertices a mesh chunk may contain.
uint32_t reserved[13]
struct varjo_VertexFormat vertexFormat Mesh vertex attribute formats.

◆ varjo_MeshChunkDescription

struct varjo_MeshChunkDescription

Environment 3D reconstruction mesh chunk description.

The 3D reconstruction is subdivided into a grid of chunks. The resolution of the grid may be retrieved with varjo_MRGetMeshReconstructionConfig. Chunk contents may be accessed using varjo_MRLockMeshChunkContentsBuffer.

Data Fields
struct varjo_Vector3Di position Chunk position inside an integer grid. Real-world resolution defined by varjo_MeshReconstructionConfig.
uint32_t reserved[34]
uint32_t triangleCount Number of triangles in the mesh chunk.
varjo_Nanoseconds updateTimestamp Timestamp the chunk last changed.
uint32_t vertexCount Number of vertices in the mesh chunk.

◆ varjo_MeshVertexPositionArray

union varjo_MeshVertexPositionArray

Supported attribute formats for mesh vertex colors.

Data Fields
struct varjo_Vector3Df * positions32f

◆ varjo_MeshVertexColorArray

union varjo_MeshVertexColorArray

Supported attribute formats for mesh vertex normals.

Data Fields
struct varjo_Vector3Df * colors32f

◆ varjo_MeshVertexNormalArray

union varjo_MeshVertexNormalArray

Supported attribute formats for mesh vertex normals.

Data Fields
struct varjo_Vector3Df * normals32f

◆ varjo_MeshChunkContent

struct varjo_MeshChunkContent

Contents of a 3D reconstruction chunks.

Data Fields
struct varjo_MeshChunkDescription description Same description which can be fetched with varjo_getChunkDescriptions.

Duplicated here, since the reconstruction would run in an independent thread and the chunk could therefore change between fetching the description and contents.

uint32_t reserved[18]
uint32_t * triangleIndices The i:th triangle is formed by vertices with indices triangleIndices[i*3], triangleIndices[i*3+1], triangleIndices[i*3+2].
union varjo_MeshVertexColorArray vertexColors Vertex RGB color. See varjo_MeshReconstructionConfig for the format.
union varjo_MeshVertexNormalArray vertexNormals Vertex normal vectors. See varjo_MeshReconstructionConfig for the format.
union varjo_MeshVertexPositionArray vertexPositions Vertex positions in global coordinates. See varjo_MeshReconstructionConfig for the format.

Typedef Documentation

◆ varjo_ChunkContentsBufferId

typedef int32_t varjo_ChunkContentsBufferId

3D reconstruction constants.

◆ varjo_DXGITextureFormat

typedef uint32_t varjo_DXGITextureFormat

◆ varjo_MeshChunkContentsBufferId

3D reconstruction mesh constants.

◆ varjo_PointCloudSnapshotId

typedef int64_t varjo_PointCloudSnapshotId

Point cloud snapshot id.

◆ varjo_PointCloudSnapshotStatus

Point cloud snapshot computation status.

◆ varjo_ShaderFlags_VideoPostProcess

Post process shader input flags.

◆ varjo_ShaderFormat

typedef int64_t varjo_ShaderFormat

Post process shader format constants.

◆ varjo_ShaderInputLayout

typedef int64_t varjo_ShaderInputLayout

Post process shader input layout versioning for shader types.

◆ varjo_ShaderType

typedef int64_t varjo_ShaderType

Post process shader type constants.

◆ varjo_VertexAttribute

typedef int64_t varjo_VertexAttribute

◆ varjo_VideoDepthTestBehavior

Video depth test behavior constants.

◆ varjo_VideoDepthTestMode

typedef int64_t varjo_VideoDepthTestMode

Video depth test mode constants.

Variable Documentation

◆ varjo_ChunkContentsBufferId_Invalid

const varjo_ChunkContentsBufferId varjo_ChunkContentsBufferId_Invalid = -1
static

◆ varjo_Error_ChunkContentsBufferAlreadyLocked

const varjo_Error varjo_Error_ChunkContentsBufferAlreadyLocked = 10714
static

3D reconstruction error codes.

◆ varjo_Error_ChunkContentsBufferInvalidId

const varjo_Error varjo_Error_ChunkContentsBufferInvalidId = 10716
static

◆ varjo_Error_ChunkContentsBufferNotLocked

const varjo_Error varjo_Error_ChunkContentsBufferNotLocked = 10715
static

◆ varjo_Error_InvalidComputeBlockSize

const varjo_Error varjo_Error_InvalidComputeBlockSize = 10103
static

◆ varjo_Error_InvalidConstantBuffer

const varjo_Error varjo_Error_InvalidConstantBuffer = 10111
static

◆ varjo_Error_InvalidConstantBufferSize

const varjo_Error varjo_Error_InvalidConstantBufferSize = 10105
static

◆ varjo_Error_InvalidIndexCount

const varjo_Error varjo_Error_InvalidIndexCount = 10116
static

◆ varjo_Error_InvalidInputLayout

const varjo_Error varjo_Error_InvalidInputLayout = 10102
static

◆ varjo_Error_InvalidSamplingMargin

const varjo_Error varjo_Error_InvalidSamplingMargin = 10104
static

◆ varjo_Error_InvalidShader

const varjo_Error varjo_Error_InvalidShader = 10115
static

◆ varjo_Error_InvalidShaderFlags

const varjo_Error varjo_Error_InvalidShaderFlags = 10113
static

◆ varjo_Error_InvalidShaderFormat

const varjo_Error varjo_Error_InvalidShaderFormat = 10101
static

◆ varjo_Error_InvalidShaderSize

const varjo_Error varjo_Error_InvalidShaderSize = 10114
static

◆ varjo_Error_InvalidShaderType

const varjo_Error varjo_Error_InvalidShaderType = 10100
static

Shader error codes.

◆ varjo_Error_InvalidTextureDimensions

const varjo_Error varjo_Error_InvalidTextureDimensions = 10106
static

◆ varjo_Error_InvalidTextureFormat

const varjo_Error varjo_Error_InvalidTextureFormat = 10107
static

◆ varjo_Error_InvalidTextureIndex

const varjo_Error varjo_Error_InvalidTextureIndex = 10108
static

◆ varjo_Error_InvalidVideoDepthTestMode

const varjo_Error varjo_Error_InvalidVideoDepthTestMode = 10201
static

Video Depth Test error codes.

◆ varjo_Error_InvalidVideoDepthTestRange

const varjo_Error varjo_Error_InvalidVideoDepthTestRange = 10202
static

◆ varjo_Error_PointCloudSnapshotInvalidId

const varjo_Error varjo_Error_PointCloudSnapshotInvalidId = 10717
static

◆ varjo_Error_RenderAPINotInitialized

const varjo_Error varjo_Error_RenderAPINotInitialized = 10112
static

◆ varjo_Error_TextureLockFailed

const varjo_Error varjo_Error_TextureLockFailed = 10117
static

◆ varjo_Error_TextureNotAcquired

const varjo_Error varjo_Error_TextureNotAcquired = 10109
static

◆ varjo_Error_TexturesLocked

const varjo_Error varjo_Error_TexturesLocked = 10110
static

◆ varjo_LockType_VideoDepthTest

const varjo_LockType varjo_LockType_VideoDepthTest = 1002
static

Lock for video depth test modes and ranges.

◆ varjo_LockType_VideoPostProcessShader

const varjo_LockType varjo_LockType_VideoPostProcessShader = 1001
static

Lock for video pass through post processing shader.

◆ varjo_MeshChunkContentsBufferId_Invalid

const varjo_MeshChunkContentsBufferId varjo_MeshChunkContentsBufferId_Invalid = -1
static

◆ varjo_PointCloudSnapshotId_Invalid

const int64_t varjo_PointCloudSnapshotId_Invalid = 0
static

◆ varjo_PointCloudSnapshotStatus_Invalid

const int64_t varjo_PointCloudSnapshotStatus_Invalid = 0
static

Snapshot does not exist or has been released.

◆ varjo_PointCloudSnapshotStatus_Pending

const int64_t varjo_PointCloudSnapshotStatus_Pending = 1
static

Snapshot capture has not yet finished.

◆ varjo_PointCloudSnapshotStatus_Ready

const int64_t varjo_PointCloudSnapshotStatus_Ready = 2
static

Snapshot is ready and can be accessed with GetPointCloudSnapshotContent.

◆ varjo_PropertyKey_ReconstructionAvailable

const varjo_PropertyKey varjo_PropertyKey_ReconstructionAvailable = 0xFF01
static

3D reconstruction status properties.

boolean. Is 3D reconstruction capable hardware present.

◆ varjo_ShaderFlag_VideoPostProcess_None

const varjo_ShaderFlags_VideoPostProcess varjo_ShaderFlag_VideoPostProcess_None = 0
static

◆ varjo_ShaderFormat_DxComputeBlob

const varjo_ShaderFormat varjo_ShaderFormat_DxComputeBlob = 1
static

◆ varjo_ShaderFormat_None

const varjo_ShaderFormat varjo_ShaderFormat_None = 0
static

◆ varjo_ShaderInputLayout_VideoPostProcess_V2

const varjo_ShaderInputLayout varjo_ShaderInputLayout_VideoPostProcess_V2 = 2
static

This layout has these built-in inputs and outputs:

  • Input RGBA texture that has the current video pass through image.
  • Output RGBA texture that should be written from the shader.
  • Constant buffer with the following data:
    • Texture dimensions.
    • Source texture timestamp.
    • Currently rendered view index: 0 Left context, 1 Right Context, 2 Left focus, 3 Right focus.
    • Destination rect. Area to render during a particular call to the shader. Source texture is guarateed to have have up-to-date data on this area.
    • Projection and inverse projection matrices. Projection matrix used when the view was rendered.
    • View and inverse view matrices. View matrix used when the view was rendered View matrix in this case is the inverse world pose of the HMD + eye offset.
    • Source focus rect: The area of the focus view within the context view. x+y components denote the top left corner and w+z the bottom right corner. The coordinates are in absolute pixel values that are in the source context coordinate system. i.e. top left and bottom right are between (0,0) and (sourceContextSize.x, sourceContextSize.y). NOTE: When rendering a focus view, this is NOT the same as "sourceSize". Source size is the texture size, but due to distortions, projection and PPD differences, the effectively used source resolution for the focus view is less than the projected texture has.
    • Source context size: Size of the source context texture. When rendering a context view this equals to "sourceSize".
  • Linear clamping texture sampler
  • Linear wrapping texture sampler

HLSL register definitions:

// Input buffer Texture2D<float4> inputTex : register(t0); // Output buffer RWTexture2D<float4> outputTex : register(u0); // Varjo generic constants cbuffer ConstantBuffer : register(b0) { int2 sourceSize; // Source texture dimensions float sourceTime; // Source texture timestamp int viewIndex; // View to be rendered: 0=LC, 1=RC, 2=LF, 3=RF int4 destRect; // Destination rectangle: x, y, w, h float4x4 projection; // Projection matrix used for the source texture float4x4 inverseProjection; // Inverse projection matrix float4x4 view; // View matrix used for the source texture float4x4 inverseView; // Inverse view matrix int4 sourceFocusRect; // Area of the focus view within the context texture int2 sourceContextSize; // Context texture size int2 padding; // Unused }

// Varjo generic texture samplers SamplerState SamplerLinearClamp : register(s0); SamplerState SamplerLinearWrap : register(s1);

◆ varjo_ShaderType_VideoPostProcess

const varjo_ShaderType varjo_ShaderType_VideoPostProcess = 1
static

◆ varjo_VertexAttribute_float32

const varjo_VertexAttribute varjo_VertexAttribute_float32 = 1
static

◆ varjo_VideoDepthTestBehavior_CombineRanges

const varjo_VideoDepthTestBehavior varjo_VideoDepthTestBehavior_CombineRanges = 2
static

Combine both video depth test range and application layer ranges.

If both ranges are provided, then stricter value will apply.

◆ varjo_VideoDepthTestBehavior_PreferLayerRange

const varjo_VideoDepthTestBehavior varjo_VideoDepthTestBehavior_PreferLayerRange = 0
static

Prefer depth test range from application layer over video range.

If any application layer has set depth test range through varjo_ViewExtensionDepthTestRange, then video depth test range is ignored.

◆ varjo_VideoDepthTestBehavior_PreferVideoRange

const varjo_VideoDepthTestBehavior varjo_VideoDepthTestBehavior_PreferVideoRange = 1
static

Prefer video depth test range over application layer ranges.

Any application layer specific depth test

◆ varjo_VideoDepthTestMode_ForcedRange

const varjo_VideoDepthTestMode varjo_VideoDepthTestMode_ForcedRange = 2
static

Depth testing is forced and limited to given range.

Depth test is done against range farZ if application depth is not available. This mode automatically enables video pass through rendering and video depth estimation to enable using it with non-mixed reality applications.

◆ varjo_VideoDepthTestMode_Full

const varjo_VideoDepthTestMode varjo_VideoDepthTestMode_Full = 0
static

Video depth test range is not limited.

◆ varjo_VideoDepthTestMode_LimitedRange

const varjo_VideoDepthTestMode varjo_VideoDepthTestMode_LimitedRange = 1
static

Video depth test is limited to given range if no application provides depth test range through varjo_ViewExtensionDepthTestRange.