--User changes

-The concept of "saving back to file in memory" has been removed. The current ember is saved back to memory whenever the render completes and the thumbnail will be updated each time.
 -Command line programs now default to using double precision.
 -The --bits argument has been removed and replaced with --sp to specify single precision. If omitted, DP is used.
 -Remove the --seed option, it was never used.
 -Remove the --sub_batch_size option, it has been part of the Xml for a long time.
 -Remove --hex_palette argument for EmberRender, it only makes sense in EmberAnimate and EmberGenome.
 -Set enable_jpg_comments and enable_png_comments to false by default. It was a very bad idea to have them be true because it reveals the flame parameters used to render the image which many artists guard closely.

--Bug fixes
 -Continuous update was broken.
 -Undo list was broken with new Library tab design.
 -Force repaint on xform checkbox change to ensure circles are immediately drawn around selected xforms.

--Code changes
 -Remove save to back to file in memory icon, document-hf-insert.png.
This commit is contained in:
mfeemster
2016-04-11 18:15:14 -07:00
parent b690bf8071
commit 7715910362
12 changed files with 92 additions and 149 deletions

View File

@ -421,7 +421,7 @@ eRenderStatus Renderer<T, bucketT>::Run(vector<byte>& finalImage, double time, s
//it.Toc("Interp 1");
//Save only for palette insertion.
if (m_InsertPalette && BytesPerChannel() == 1)
if (m_InsertPalette)
m_TempEmber = m_Ember;
if (!resume)//Only need to create this when starting a new render.
@ -1232,22 +1232,38 @@ eRenderStatus Renderer<T, bucketT>::AccumulatorToFinalImage(byte* pixels, size_t
}
});
//Insert the palette into the image for debugging purposes. Only works with 8bpc and is not implemented on the GPU.
if (m_InsertPalette && BytesPerChannel() == 1)
//Insert the palette into the image for debugging purposes. Not implemented on the GPU.
if (m_InsertPalette)
{
size_t i, j, ph = 100;
if (ph >= FinalRasH())
ph = FinalRasH();
for (j = 0; j < ph; j++)
if (BytesPerChannel() == 1)
{
for (i = 0; i < FinalRasW(); i++)
for (j = 0; j < ph; j++)
{
byte* p = pixels + (NumChannels() * (i + j * FinalRasW()));
p[0] = byte(m_TempEmber.m_Palette[i * 256 / FinalRasW()][0] * WHITE);//The palette is [0..1], output image is [0..255].
p[1] = byte(m_TempEmber.m_Palette[i * 256 / FinalRasW()][1] * WHITE);
p[2] = byte(m_TempEmber.m_Palette[i * 256 / FinalRasW()][2] * WHITE);
for (i = 0; i < FinalRasW(); i++)
{
auto p = pixels + (NumChannels() * (i + j * FinalRasW()));
p[0] = byte(m_TempEmber.m_Palette[i * 256 / FinalRasW()][0] * WHITE);//The palette is [0..1], output image is [0..255].
p[1] = byte(m_TempEmber.m_Palette[i * 256 / FinalRasW()][1] * WHITE);
p[2] = byte(m_TempEmber.m_Palette[i * 256 / FinalRasW()][2] * WHITE);
}
}
}
else//BPC == 2.
{
for (j = 0; j < ph; j++)
{
for (i = 0; i < FinalRasW(); i++)
{
auto p16 = reinterpret_cast<glm::uint16*>(pixels + (PixelSize() * (i + j * FinalRasW())));
p16[0] = glm::uint16(m_TempEmber.m_Palette[i * 256 / FinalRasW()][0] * WHITE * bucketT(256)); //The palette is [0..1], output image is [0..65535].
p16[1] = glm::uint16(m_TempEmber.m_Palette[i * 256 / FinalRasW()][1] * WHITE * bucketT(256));
p16[2] = glm::uint16(m_TempEmber.m_Palette[i * 256 / FinalRasW()][2] * WHITE * bucketT(256));
}
}
}
}