(b driver.Device, vsSrc shader.Sources, fsSrc [3]shader.Sources, uniforms [3]any)
| 567 | } |
| 568 | |
| 569 | func createColorPrograms(b driver.Device, vsSrc shader.Sources, fsSrc [3]shader.Sources, uniforms [3]any) (pipelines [2][3]*pipeline, err error) { |
| 570 | defer func() { |
| 571 | if err != nil { |
| 572 | for _, p := range pipelines { |
| 573 | for _, p := range p { |
| 574 | if p != nil { |
| 575 | p.Release() |
| 576 | } |
| 577 | } |
| 578 | } |
| 579 | } |
| 580 | }() |
| 581 | blend := driver.BlendDesc{ |
| 582 | Enable: true, |
| 583 | SrcFactor: driver.BlendFactorOne, |
| 584 | DstFactor: driver.BlendFactorOneMinusSrcAlpha, |
| 585 | } |
| 586 | layout := driver.VertexLayout{ |
| 587 | Inputs: []driver.InputDesc{ |
| 588 | {Type: shader.DataTypeFloat, Size: 2, Offset: 0}, |
| 589 | {Type: shader.DataTypeFloat, Size: 2, Offset: 4 * 2}, |
| 590 | }, |
| 591 | Stride: 4 * 4, |
| 592 | } |
| 593 | vsh, err := b.NewVertexShader(vsSrc) |
| 594 | if err != nil { |
| 595 | return pipelines, err |
| 596 | } |
| 597 | defer vsh.Release() |
| 598 | for i, format := range []driver.TextureFormat{driver.TextureFormatOutput, driver.TextureFormatSRGBA} { |
| 599 | { |
| 600 | fsh, err := b.NewFragmentShader(fsSrc[materialTexture]) |
| 601 | if err != nil { |
| 602 | return pipelines, err |
| 603 | } |
| 604 | defer fsh.Release() |
| 605 | pipe, err := b.NewPipeline(driver.PipelineDesc{ |
| 606 | VertexShader: vsh, |
| 607 | FragmentShader: fsh, |
| 608 | BlendDesc: blend, |
| 609 | VertexLayout: layout, |
| 610 | PixelFormat: format, |
| 611 | Topology: driver.TopologyTriangleStrip, |
| 612 | }) |
| 613 | if err != nil { |
| 614 | return pipelines, err |
| 615 | } |
| 616 | var vertBuffer *uniformBuffer |
| 617 | if u := uniforms[materialTexture]; u != nil { |
| 618 | vertBuffer = newUniformBuffer(b, u) |
| 619 | } |
| 620 | pipelines[i][materialTexture] = &pipeline{pipe, vertBuffer} |
| 621 | } |
| 622 | { |
| 623 | var vertBuffer *uniformBuffer |
| 624 | fsh, err := b.NewFragmentShader(fsSrc[materialColor]) |
| 625 | if err != nil { |
| 626 | return pipelines, err |
no test coverage detected
searching dependent graphs…