nemo::Network* construct(unsigned ncount, unsigned scount, unsigned dmax, bool stdp) { rng_t rng; /* Neuron parameters and weights are partially randomised */ urng_t randomParameter(rng, boost::uniform_real<double>(0, 1)); uirng_t randomTarget(rng, boost::uniform_int<>(0, ncount-1)); uirng_t randomDelay(rng, boost::uniform_int<>(1, dmax)); nemo::Network* net = new nemo::Network(); for(unsigned nidx=0; nidx < ncount; ++nidx) { if(nidx < (ncount * 4) / 5) { // excitatory addExcitatoryNeuron(net, nidx, randomParameter); for(unsigned s = 0; s < scount; ++s) { net->addSynapse(nidx, randomTarget(), randomDelay(), 0.5f * float(randomParameter()), stdp); } } else { // inhibitory addInhibitoryNeuron(net, nidx, randomParameter); for(unsigned s = 0; s < scount; ++s) { net->addSynapse(nidx, randomTarget(), 1U, float(-randomParameter()), 0); } } } return net; }
DemoGLWidget::DemoGLWidget(QWidget *parent) : QGLWidget(parent), entity1(0), entity2(0), entity3(0), entity4(0), critter(0) { setAttribute(Qt::WA_PaintOnScreen); setAttribute(Qt::WA_NoSystemBackground); setAutoBufferSwap(false); #ifndef Q_WS_QWS setMinimumSize(300, 250); #endif frames = 0; randomTarget(); drawTitle = true; titleFading = false; titleOcapacity = 1.0; loadedInstruments = 0; totalInstruments = 8; waitForClick = false; // Init FBO /* makeCurrent(); if (QGLFramebufferObject::hasOpenGLFramebufferBlit()) { QGLFramebufferObjectFormat format; format.setSamples(4); format.setAttachment(QGLFramebufferObject::CombinedDepthStencil); render_fbo = new QGLFramebufferObject(512, 512, format); texture_fbo = new QGLFramebufferObject(512, 512); } else { render_fbo = new QGLFramebufferObject(1024, 1024); texture_fbo = render_fbo; } */ /* fbo->width = WIDTH; fbo->height = HEIGHT; Utils::InitFBO(fbo); */ // Init shaders /* QGLShader *vshader2 = new QGLShader(QGLShader::Vertex); const char *vsrc2 = "void main(void) \n" "{" " gl_Position = ftransform();" " gl_TexCoord[0] = gl_MultiTexCoord0;" "}"; vshader2->compileSourceCode(vsrc2); QGLShader *fshader2 = new QGLShader(QGLShader::Fragment); const char *fsrc2 = "uniform int Width, Height;" "uniform int Dist;" "uniform mat3 Kernel;" "uniform sampler2D Tex0; \n" "void main (void)" "{" " int i, j;" " vec2 coord;" " float contrib = 0.0;" " vec4 sum = vec4(0.0);" " // 3x3 convolution matrix" " for(i = -1; i <= 1; i++) " " for(j = -1; j <= 1; j++) {" " coord = gl_TexCoord[0].st + vec2(float(i) * (1.0/float(Width)) * float(Dist), float(j) * (1.0/float(Height)) * float(Dist));" " sum += Kernel[i+1][j+1] * texture2D(Tex0, coord.xy);" " contrib += Kernel[i+1][j+1];" " }" " gl_FragColor = sum/contrib;" "}"; fshader2->compileSourceCode(fsrc2); program.addShader(vshader2); program.addShader(fshader2); program.link(); */ // Play music if(USE_SOUND) { //qDebug("Rendering music..."); //synth_init(); //qDebug("Rendered"); //synth_play(); loader = new SynthLoadThread(); loader->start(QThread::HighestPriority); connect(loader, SIGNAL(finished()), this, SLOT(loadReady())); } }