Example #1
0
void TextureViewer::OnEventSelected(uint32_t frameID, uint32_t eventID)
{
	m_Core->Renderer()->AsyncInvoke([this](IReplayRenderer *) {
		TextureDisplay d;
		if(m_Core->APIProps().pipelineType == ePipelineState_D3D11)
			d.texid = m_Core->CurD3D11PipelineState.m_OM.RenderTargets[0].Resource;
		else
			d.texid = m_Core->CurGLPipelineState.m_FB.m_DrawFBO.Color[0];
		d.mip = 0;
		d.sampleIdx = ~0U;
		d.overlay = eTexOverlay_None;
		d.CustomShader = ResourceId();
		d.HDRMul = -1.0f;
		d.linearDisplayAsGamma = true;
		d.FlipY = false;
		d.rangemin = 0.0f;
		d.rangemax = 1.0f;
		d.scale = -1.0f;
		d.offx = 0.0f;
		d.offy = 0.0f;
		d.sliceFace = 0;
		d.rawoutput = false;
		d.lightBackgroundColour = d.darkBackgroundColour =
			FloatVector(0.0f, 0.0f, 0.0f, 0.0f);
		d.Red = d.Green = d.Blue = true;
		d.Alpha = false;
		m_Output->SetTextureDisplay(d);

		GUIInvoke::call([this]() { ui->render->update(); });
	});
}
Example #2
0
	void Concat::BackwardProp(const size_t batchSize)
	{
#ifdef DNN_LEAN
		for (size_t i = 0; i < InputCount; i++)
			if (Inputs[i]->NeuronsD1.size() < batchSize * Inputs[i]->NeuronCount)
				Inputs[i]->NeuronsD1 = FloatVector(batchSize * Inputs[i]->NeuronCount, Float(0));
#endif // DNN_LEAN

#ifdef DNN_STOCHASTIC
		if (batchSize == 1)
		{
			size_t channelOffset = 0;
			for (size_t input = 0; input < InputCount; input++)
			{
				for (size_t c = channelOffset; c < channelOffset + Inputs[input]->C; c++)
				{
					const size_t inputIndex = (c - channelOffset) * WH;
					const size_t outputIndex = c * WH;
					for (size_t wh = 0; wh < WH; wh++)
						Inputs[input]->NeuronsD1[inputIndex + wh] += NeuronsD1[outputIndex + wh];
				}
				channelOffset += Inputs[input]->C;
			}
		}
		else
		{
#endif
			for_i(batchSize, LIGHT_COMPUTE, [=](size_t b)
			{
				const size_t outputSampleOffset = b * NeuronCount;
				size_t channelOffset = 0;
				for (size_t input = 0; input < InputCount; input++)
				{
					const size_t inputSampleOffset = b * Inputs[input]->NeuronCount;
					for (size_t c = channelOffset; c < channelOffset + Inputs[input]->C; c++)
					{
						const size_t inputIndex = ((c - channelOffset) * WH) + inputSampleOffset;
						const size_t outputIndex = (c * WH) + outputSampleOffset;
						for (size_t wh = 0; wh < WH; wh++)
							Inputs[input]->NeuronsD1[inputIndex + wh] += NeuronsD1[outputIndex + wh];
					}
					channelOffset += Inputs[input]->C;
				}
			});
#ifdef DNN_STOCHASTIC
		}
#endif
#ifdef DNN_LEAN
		NeuronsD1.~vector();
#endif // DNN_LEAN
	}
Example #3
0
void DysonCompressor::clearBuffers()
{
    toRemove = NDELAY;
    delayedSamples = 0;
    ndelayptr = 0;

    rgain = rmastergain0 = 1.0;
    rlevelsq0 = rlevelsq1 = 0.0;

    rpeakgain0 = rpeakgain1 = 1.0;
    peaklimitdelay = rpeaklimitdelay = 0;
    lastrgain = 1.0;

    memset(rlevelsqn, 0, sizeof rlevelsqn);
    memset(rlevelsqe, 0, sizeof rlevelsqe);

    samplesdelayed.clear();
    if (enabled)
    {
        for (int i = 0; i < channels; ++i)
            samplesdelayed.append(FloatVector(NDELAY));
    }
}
Example #4
0
bool ReplayOutput::Display()
{
  if(m_pDevice->CheckResizeOutputWindow(m_MainOutput.outputID))
  {
    m_pDevice->GetOutputWindowDimensions(m_MainOutput.outputID, m_Width, m_Height);
    m_MainOutput.dirty = true;
  }

  for(size_t i = 0; i < m_Thumbnails.size(); i++)
    if(m_pDevice->CheckResizeOutputWindow(m_Thumbnails[i].outputID))
      m_Thumbnails[i].dirty = true;

  for(size_t i = 0; i < m_Thumbnails.size(); i++)
  {
    if(!m_Thumbnails[i].dirty)
    {
      m_pDevice->BindOutputWindow(m_Thumbnails[i].outputID, false);
      m_pDevice->FlipOutputWindow(m_Thumbnails[i].outputID);
      continue;
    }
    if(!m_pDevice->IsOutputWindowVisible(m_Thumbnails[i].outputID))
      continue;

    float color[4] = {0.0f, 0.0f, 0.0f, 0.0f};

    if(m_Thumbnails[i].texture == ResourceId())
    {
      m_pDevice->BindOutputWindow(m_Thumbnails[i].outputID, false);

      color[0] = 0.4f;
      m_pDevice->ClearOutputWindowColour(m_Thumbnails[i].outputID, color);

      m_pDevice->RenderCheckerboard(Vec3f(0.6f, 0.6f, 0.7f), Vec3f(0.5f, 0.5f, 0.6f));

      m_pDevice->FlipOutputWindow(m_Thumbnails[i].outputID);
      continue;
    }

    m_pDevice->BindOutputWindow(m_Thumbnails[i].outputID, false);
    m_pDevice->ClearOutputWindowColour(m_Thumbnails[i].outputID, color);

    TextureDisplay disp;

    disp.Red = disp.Green = disp.Blue = true;
    disp.Alpha = false;
    disp.HDRMul = -1.0f;
    disp.linearDisplayAsGamma = true;
    disp.FlipY = false;
    disp.mip = 0;
    disp.sampleIdx = ~0U;
    disp.CustomShader = ResourceId();
    disp.texid = m_pDevice->GetLiveID(m_Thumbnails[i].texture);
    disp.typeHint = m_Thumbnails[i].typeHint;
    disp.scale = -1.0f;
    disp.rangemin = 0.0f;
    disp.rangemax = 1.0f;
    disp.sliceFace = 0;
    disp.offx = 0.0f;
    disp.offy = 0.0f;
    disp.rawoutput = false;
    disp.overlay = eTexOverlay_None;

    disp.lightBackgroundColour = disp.darkBackgroundColour = FloatVector();

    if(m_Thumbnails[i].typeHint == eCompType_SNorm)
      disp.rangemin = -1.0f;

    if(m_Thumbnails[i].depthMode)
      disp.Green = disp.Blue = false;

    m_pDevice->RenderTexture(disp);

    m_pDevice->FlipOutputWindow(m_Thumbnails[i].outputID);

    m_Thumbnails[i].dirty = false;
  }

  if(m_pDevice->CheckResizeOutputWindow(m_PixelContext.outputID))
    m_MainOutput.dirty = true;

  if(!m_MainOutput.dirty)
  {
    m_pDevice->BindOutputWindow(m_MainOutput.outputID, false);
    m_pDevice->FlipOutputWindow(m_MainOutput.outputID);
    m_pDevice->BindOutputWindow(m_PixelContext.outputID, false);
    m_pDevice->FlipOutputWindow(m_PixelContext.outputID);
    return true;
  }

  m_MainOutput.dirty = false;

  switch(m_Config.m_Type)
  {
    case eOutputType_MeshDisplay: DisplayMesh(); break;
    case eOutputType_TexDisplay: DisplayTex(); break;
    default: RDCERR("Unexpected display type! %d", m_Config.m_Type); break;
  }

  m_pDevice->FlipOutputWindow(m_MainOutput.outputID);

  DisplayContext();

  return true;
}
Example #5
0
FloatVector Camera::GetUp()
{
  Vec3f up = basis.GetUp();
  return FloatVector(up.x, up.y, up.z, 1.0f);
}
Example #6
0
FloatVector Camera::GetRight()
{
  Vec3f right = basis.GetRight();
  return FloatVector(right.x, right.y, right.z, 1.0f);
}
Example #7
0
FloatVector Camera::GetForward()
{
  Vec3f fwd = basis.GetForward();
  return FloatVector(fwd.x, fwd.y, fwd.z, 1.0f);
}
Example #8
0
FloatVector Camera::GetPosition()
{
  return FloatVector(pos.x, pos.y, pos.z, 1.0f);
}
Example #9
0
 void Life::update()
 {
   Item::update();
   Object::getMovementBuffer().pushVector(getTimer().getPerSecond(FloatVector(dir * 150, 0)));
 }