Example #1
0
shader = linear.isect_shader([runtime])
hit2 = HitPoint()
props = {'hit': hit2, 'ret': 0, 'ray': ray}
code = """
ret = isect(ray, hit)
"""
bs = BasicShader(code, props)
bs.prepare([runtime], [shader])

bs.execute()
print (bs.shader.get_value('ret'))
print (bs.shader.get_value('hit.t'))
print (bs.shader.get_value('hit.normal'))


linear.visibility_asm([runtime], 'visibility')
code = """
    #DATA
    uint32 ret
    float p1[4] = 0.2, 0.2, 0.2, 0.0
    float p2[4] = 1.5, 1.5, 1.5, 0.0
    float _xmm0[4]

    #CODE
    macro eq128 xmm0 = p1
    macro eq128 xmm1 = p2
    call visibility 
    mov dword [ret], eax
    macro eq128 _xmm0 = xmm0 {xmm7}
    #END
"""
Example #2
0
shader = linear.isect_shader([runtime])
hit2 = HitPoint()
props = {'hit': hit2, 'ret': 0, 'ray': ray}
code = """
ret = isect(ray, hit)
"""
bs = BasicShader(code, props)
bs.prepare([runtime], [shader])

bs.execute()
print(bs.shader.get_value('ret'))
print(bs.shader.get_value('hit.t'))
print(bs.shader.get_value('hit.normal'))

linear.visibility_asm([runtime], 'visibility')
code = """
    #DATA
    uint32 ret
    float p1[4] = 0.2, 0.2, 0.2, 0.0
    float p2[4] = 1.5, 1.5, 1.5, 0.0
    float _xmm0[4]

    #CODE
    macro eq128 xmm0 = p1
    macro eq128 xmm1 = p2
    call visibility 
    mov dword [ret], eax
    macro eq128 _xmm0 = xmm0 {xmm7}
    #END
"""