public bool LoadExemplar(String fname) { //load our Analyser mExemplar = null; mExemplar = new Exemplar(fname); //load our synthesiser mSynthesiser = null; mSynthesiser = new Synthesiser(); mSynthesiser.loadPrograms(mExemplar, Synthesiser.SynthesisFlags._Standard | Synthesiser.SynthesisFlags._Subpass1234); clearPaintLayer(); mSynthesiser.setExemplarPeriod(mExemplar, true, 1, 1); m_bNeedUpdate = true; m_bNeedUpdateJacobianMap = true; for (int i = 0; i < mSynthNodes.Count; i++) { mSynthNodes[i].m_Query = null; } postLoadCreateControlPackets(); return(true); }
unsafe public void computeD3DPixPackTextures(Synthesiser m_Synthesizer) { int sz = 0; for (int l = 0; l < Globals.cNumLevels /*m_Synthesizer.getAnalyser().nbLevels()*/; l++) { int csz = Synthesiser.bufferSizeFromWindow(bufferrgn(l)); sz = Math.Max(csz, sz); } mD3DPixPackOffsets = new Texture[m_iNbLevels, Globals.cNumCorrectionPasses, 4]; for (int l = 0; l < m_iNbLevels; l++) { Window window = bufferrgn(l); for (int pass = 0; pass < Globals.cNumCorrectionPasses; pass++) { for (int sub = 0; sub < 4; sub++) { // . which quadrant to update ? int ai = (m_Synthesizer.m_SubpassesOrderingTbl[pass % Globals.SYNTH_ORDER_NUM_PASSES][sub][0] + window.left()) & 1; int aj = (m_Synthesizer.m_SubpassesOrderingTbl[pass % Globals.SYNTH_ORDER_NUM_PASSES][sub][1] + window.top()) & 1; Globals.Assert(ai >= 0 && aj >= 0); Vector4 qszs = m_Synthesizer.bufferSize(sz); mD3DPixPackOffsets[l, pass, sub] = new Texture(BRenderDevice.getDevice(), 5, 5, 1, 0, Format.G16R16F, Pool.Managed); GraphicsStream texstream = mD3DPixPackOffsets[l, pass, sub].LockRectangle(0, LockFlags.None); ushort * data = (ushort *)texstream.InternalDataPointer; int rectPitch = 5 * 2; for (int x = 0; x < 5; x++) { for (int y = 0; y < 5; y++) { int ox = x - 2; int oy = y - 2; int fx = (int)Math.Floor((ox + ai) / 2.0f); int fy = (int)Math.Floor((oy + aj) / 2.0f); Vector4 vq = new Vector4( ((float)(fx + (sz >> 1) * ox) + ai * (sz >> 1)) / qszs.X, ((float)(fy + (sz >> 1) * oy) + aj * (sz >> 1)) / qszs.Y, 0, 0); //offs[x + y * 5] = vq; int srcIndex = x * 2 * sizeof(byte) + y * rectPitch; float16 xx = new float16(vq.X); float16 yy = new float16(vq.Y); data[srcIndex] = xx.getInternalDat(); data[srcIndex + 1] = yy.getInternalDat(); } } mD3DPixPackOffsets[l, pass, sub].UnlockRectangle(0); } } } }
public SynthesisQuery(Synthesiser synth, SynthesizeParameters parms) { m_Synthesizer = (synth); m_iLevel = (-1); m_Params = (parms); //m_Params.mControlPacket.updateSynthWindow(); // allocate buffers allocateBuffers(); // set current level to start synthesis at coarsest m_iLevel = Globals.cNumLevels; }
public void loadPrograms() { Macro [] defines = new Macro[16]; int nbdef; nbdef = 0; Synthesiser.addDefaultDefines(ref defines, ref nbdef); Synthesiser.endDefine(ref defines, ref nbdef); m_fxJacobian = ShaderManager.loadShader(AppDomain.CurrentDomain.BaseDirectory + "shaders\\jacobian.fx", null); m_fxJacobianClearTech = m_fxJacobian.GetTechnique("t_identity"); m_fxJacobianSelectTech = m_fxJacobian.GetTechnique("t_selected"); m_fxGeomPaintJMapTech = m_fxJacobian.GetTechnique("t_paint_jmap"); m_fxJacobianViewport = m_fxJacobian.GetParameter(null, "Viewport"); m_fxJacobianGlobalScale = m_fxJacobian.GetParameter(null, "GlobalScale"); m_fxJacobianSelectedJMap = m_fxJacobian.GetParameter(null, "SelectedJMap"); m_fxGeomGlobalScale = m_fxJacobian.GetParameter(null, "GlobalScale"); m_fxGeomPaintedJMap = m_fxJacobian.GetParameter(null, "PaintedJMap"); m_fxGeomExemplarMainDirection = m_fxJacobian.GetParameter(null, "ExemplarMainDirection"); }
void allocateBuffers() { int maxsz = 0; // allocate level's buffers m_SynthBuffers = new List <single_buffer>(Globals.cNumLevels);//m_Synthesizer.getAnalyser().nbLevels()); for (int l = 0; l < Globals.cNumLevels /*m_Synthesizer.getAnalyser().nbLevels()*/; l++) { int sz = Synthesiser.bufferSizeFromWindow(m_Params.mControlPacket.m_Windows.bufferrgn(l)); maxsz = Math.Max(maxsz, sz); m_SynthBuffers.Add(new single_buffer()); m_SynthBuffers[l].create(sz); } // allocate double buffer m_WorkBuffer.create(maxsz); // allocate depth-stencil buffer m_DepthStencilSurface = BRenderDevice.getDevice().CreateDepthStencilSurface(maxsz, maxsz, DepthFormat.D24S8, MultiSampleType.None, 0, true); }