forked from bartvdbraak/blender
Fix T43784: Compositing scale node border error
This was still the known issue with pixel center, original commit didn't cover all the cases by the looks of it. Should be all fine now, but much more intense testing is welcome.
This commit is contained in:
parent
1f527c6033
commit
4c75f77669
@ -185,7 +185,7 @@ void CompositorOperation::executeRegion(rcti *rect, unsigned int tileNumber)
|
||||
|
||||
for (y = y1; y < y2 && (!breaked); y++) {
|
||||
for (x = x1; x < x2 && (!breaked); x++) {
|
||||
int input_x = x + dx, input_y = y + dy;
|
||||
float input_x = (float)x + dx + 0.5f, input_y = (float)y + dy + 0.5f;
|
||||
|
||||
this->m_imageInput->readSampled(color, input_x, input_y, COM_PS_NEAREST);
|
||||
if (this->m_useAlphaInput) {
|
||||
|
@ -100,12 +100,12 @@ void ViewerOperation::executeRegion(rcti *rect, unsigned int tileNumber)
|
||||
|
||||
for (y = y1; y < y2 && (!breaked); y++) {
|
||||
for (x = x1; x < x2; x++) {
|
||||
this->m_imageInput->readSampled(&(buffer[offset4]), x, y, COM_PS_NEAREST);
|
||||
this->m_imageInput->readSampled(&(buffer[offset4]), (float)x + 0.5f, (float)y + 0.5f, COM_PS_NEAREST);
|
||||
if (this->m_useAlphaInput) {
|
||||
this->m_alphaInput->readSampled(alpha, x, y, COM_PS_NEAREST);
|
||||
this->m_alphaInput->readSampled(alpha, (float)x + 0.5f, (float)y + 0.5f, COM_PS_NEAREST);
|
||||
buffer[offset4 + 3] = alpha[0];
|
||||
}
|
||||
this->m_depthInput->readSampled(depth, x, y, COM_PS_NEAREST);
|
||||
this->m_depthInput->readSampled(depth, (float)x + 0.5f, (float)y + 0.5f, COM_PS_NEAREST);
|
||||
depthbuffer[offset] = depth[0];
|
||||
|
||||
offset ++;
|
||||
|
@ -74,7 +74,7 @@ void WriteBufferOperation::executeRegion(rcti *rect, unsigned int tileNumber)
|
||||
for (y = y1; y < y2 && (!breaked); y++) {
|
||||
int offset4 = (y * memoryBuffer->getWidth() + x1) * num_channels;
|
||||
for (x = x1; x < x2; x++) {
|
||||
this->m_input->read(&(buffer[offset4]), x, y, data);
|
||||
this->m_input->read(&(buffer[offset4]), (float)x + 0.5f, (float)y + 0.5f, data);
|
||||
offset4 += num_channels;
|
||||
}
|
||||
if (isBreaked()) {
|
||||
@ -99,7 +99,7 @@ void WriteBufferOperation::executeRegion(rcti *rect, unsigned int tileNumber)
|
||||
for (y = y1; y < y2 && (!breaked); y++) {
|
||||
int offset4 = (y * memoryBuffer->getWidth() + x1) * num_channels;
|
||||
for (x = x1; x < x2; x++) {
|
||||
this->m_input->readSampled(&(buffer[offset4]), x, y, COM_PS_NEAREST);
|
||||
this->m_input->readSampled(&(buffer[offset4]), (float)x + 0.5f, (float)y + 0.5f, COM_PS_NEAREST);
|
||||
offset4 += num_channels;
|
||||
}
|
||||
if (isBreaked()) {
|
||||
|
Loading…
Reference in New Issue
Block a user