| 183 | } // namespace |
| 184 | |
| 185 | void HdCyclesRenderBuffer::WritePixels(const float *srcPixels, |
| 186 | const PXR_NS::GfVec2i &srcOffset, |
| 187 | const GfVec2i &srcDims, |
| 188 | const int srcChannels, |
| 189 | bool isId) |
| 190 | { |
| 191 | uint8_t *dstPixels = _data.data(); |
| 192 | |
| 193 | const size_t formatSize = HdDataSizeOfFormat(_format); |
| 194 | dstPixels += srcOffset[1] * (formatSize * _width) + srcOffset[0] * formatSize; |
| 195 | |
| 196 | switch (_format) { |
| 197 | case HdFormatUNorm8: |
| 198 | case HdFormatUNorm8Vec2: |
| 199 | case HdFormatUNorm8Vec3: |
| 200 | case HdFormatUNorm8Vec4: |
| 201 | writePixels(srcPixels, |
| 202 | srcDims, |
| 203 | srcChannels, |
| 204 | dstPixels, |
| 205 | GfVec2i(_width, _height), |
| 206 | 1 + (_format - HdFormatUNorm8), |
| 207 | UInt8Conversion()); |
| 208 | break; |
| 209 | |
| 210 | case HdFormatSNorm8: |
| 211 | case HdFormatSNorm8Vec2: |
| 212 | case HdFormatSNorm8Vec3: |
| 213 | case HdFormatSNorm8Vec4: |
| 214 | writePixels(srcPixels, |
| 215 | srcDims, |
| 216 | srcChannels, |
| 217 | dstPixels, |
| 218 | GfVec2i(_width, _height), |
| 219 | 1 + (_format - HdFormatSNorm8), |
| 220 | SInt8Conversion()); |
| 221 | break; |
| 222 | |
| 223 | case HdFormatFloat16: |
| 224 | case HdFormatFloat16Vec2: |
| 225 | case HdFormatFloat16Vec3: |
| 226 | case HdFormatFloat16Vec4: |
| 227 | writePixels(srcPixels, |
| 228 | srcDims, |
| 229 | srcChannels, |
| 230 | reinterpret_cast<half *>(dstPixels), |
| 231 | GfVec2i(_width, _height), |
| 232 | 1 + (_format - HdFormatFloat16), |
| 233 | HalfConversion()); |
| 234 | break; |
| 235 | |
| 236 | case HdFormatFloat32: |
| 237 | case HdFormatFloat32Vec2: |
| 238 | case HdFormatFloat32Vec3: |
| 239 | case HdFormatFloat32Vec4: |
| 240 | writePixels(srcPixels, |
| 241 | srcDims, |
| 242 | srcChannels, |
no test coverage detected