hal/shader/package.lisp
defpackage#:luv.shader
:use#:cl
:import-from#:luv.arithmetic#:dot#:clamp#:mix#:smoothstep#:normalize
:import-from#:luv.arithmetic.language#:quantity#:assume-quantity#:interpret#:representation#:convert-unit#:counted-fold
:shadowing-import-from#:luv.arithmetic#:step
:local-nicknames
#:math#:luv.arithmetic
#:lang#:luv.arithmetic.language
:documentation
The backend-neutral typed shader language and lowering protocols.
:export#:shader-language-error#:shader-language-error-form#:shader-language-error-reason#:shader-language-error-details#:shader-type#:shader-type-name#:shader-type-component-count#:shader-type-scalar-kind#:shader-type-bit-width#:shader-type-opaque-kind#:shader-type-sample-result-type#:shader-type-image-depth-p#:find-shader-type#:shader-type=#:shader-float-type-p#:shader-uint-type-p#:shader-unsigned-type-p#:shader-vector-type-p#:shader-object-name#:shader-object-source-form#:shader-variable-declaration#:shader-declaration-type#:shader-declaration-quantity-specification#:shader-declaration-quantity-layout#:shader-interface-variable#:shader-interface-direction#:shader-interface-location#:shader-interface-built-in#:shader-interface-interpolation#:shader-resource#:shader-resource-descriptor-set#:shader-resource-binding#:shader-resource-sample-quantity-specification#:shader-resource-sample-quantity-layout#:shader-resource-sample-transfer#:shader-uniform-block#:shader-uniform-block-members#:shader-uniform-block-byte-size#:shader-storage-buffer#:shader-storage-buffer-element-type#:shader-storage-buffer-element-stride#:shader-uniform-member#:shader-uniform-member-block#:shader-uniform-member-index#:shader-uniform-member-offset#:shader-task-payload#:shader-task-payload-fields#:shader-task-payload-field#:shader-task-payload-field-payload#:shader-task-payload-field-index#:shader-task-payload-field-element-count#:task-payload-definition-for#:define-task-payload#:shader-map-definition#:shader-projective-map-definition#:shader-map-domain-type#:shader-map-domain-quantity-specification#:shader-projective-map-homogeneous-type#:shader-projective-map-sample-type#:shader-projective-map-sample-quantity-layout#:shader-projective-map-coordinate-scale#:shader-projective-map-coordinate-offset#:shader-map-definition-for#:define-projective-shader-map#:shader-binding#:shader-binding-expression#:shader-function-parameter-binding#:shader-expression#:shader-expression-type#:shader-expression-quantity-specification#:shader-expression-quantity-layout#:shader-expression-quantity-checked-p#:shader-expression-materialized-p#:shader-expression-source-form#:shader-expression-name#:shader-literal#:shader-literal-value#:shader-reference#:shader-reference-target#:shader-call#:shader-call-operator#:shader-call-operands#:shader-call-parameters#:shader-function-definition#:shader-function#:shader-function-parameters#:shader-function-body#:shader-function-definition-for#:define-shader-function#:shader-function-call#:shader-function-call-definition#:shader-function-call-arguments#:shader-function-call-bindings#:shader-function-call-result#:shader-conditional#:shader-counted-fold#:shader-map-application#:shader-map-application-definition#:shader-map-application-point#:shader-map-application-rows#:shader-map-projection#:shader-map-projection-application#:shader-interpretation#:shader-interpretation-operand#:shader-quantity-construction#:shader-quantity-construction-operand#:shader-quantity-assumption#:shader-quantity-assumption-operand#:shader-quantity-boundary#:shader-quantity-boundary-operand#:shader-representation#:shader-representation-operand#:shader-unit-conversion#:shader-unit-conversion-operand#:shader-unit-conversion-factor#:shader-expression-form#:shader-expression-children#:shader-map-application-for-projection#:shader-map-application-from-target#:shader-map-projection-for-swizzle#:shader-map-projection-from-target#:dot#:sample#:sample-compare#:texel-load#:derivative-x#:derivative-y#:mix#:uint#:uint64#:float#:uvec2#:uvec3#:uvec4#:vec2#:vec3#:vec4#:swizzle#:clamp#:smoothstep#:step#:normalize#:floor#:fract#:sin#:cos#:exp#:log#:quantity#:assume-quantity#:interpret#:representation#:project-point#:project-sample#:convert-unit#:mod#:ldb#:byte#:counted-fold#:payload-element#:buffer-element#:set-output#:set-mesh-output-counts#:set-mesh-vertex#:set-mesh-primitive#:set-payload#:set-payload-element#:emit-mesh-workgroups#:shader-operator#:define-shader-operator#:shader-operator-p#:shader-abstraction#:define-shader-abstraction#:shader-abstraction-p#:shader-source-revision#:shader-source-value#:*shader-source-value-references*#:shader-source-value-references-current-p#:expand-shader-abstraction-call#:expand-shader-source-form#:shadow-depth-test#:shadow-visibility#:parse-shader-operator-call#:infer-shader-call-type#:swizzle-components#:mesh-topology-index-type#:lower-shader-call#:shader-output-assignment#:shader-statement#:shader-statement-source-form#:shader-statement-expressions#:shader-assignment-output#:shader-assignment-value#:shader-assignment-source-form#:shader-specification#:shader-specification-stage#:shader-specification-inputs#:shader-specification-outputs#:shader-specification-resources#:shader-specification-workgroup-size#:shader-specification-task-payload#:shader-specification-mesh-output#:shader-specification-bindings#:shader-specification-statements#:shader-specification-expressions#:shader-conditional-statement#:shader-conditional-statement-condition#:shader-conditional-statement-statements#:shader-mesh-output#:shader-mesh-output-topology#:shader-mesh-output-max-vertices#:shader-mesh-output-max-primitives#:shader-mesh-output-vertex-outputs#:shader-mesh-output-primitive-outputs#:shader-mesh-output-counts#:shader-mesh-output-vertex-count#:shader-mesh-output-primitive-count#:shader-mesh-vertex-store#:shader-mesh-vertex-store-index#:shader-mesh-vertex-store-values#:shader-mesh-primitive-store#:shader-mesh-primitive-store-index#:shader-mesh-primitive-store-indices#:shader-mesh-primitive-store-values#:shader-task-payload-store#:shader-task-payload-store-field#:shader-task-payload-store-index#:shader-task-payload-store-value#:shader-emit-mesh-workgroups#:shader-emit-mesh-workgroups-counts#:shader-payload-element#:shader-payload-element-field#:shader-payload-element-index#:shader-buffer-element#:shader-buffer-element-buffer#:shader-buffer-element-index#:shader-bit-field-call#:shader-bit-field-size#:shader-bit-field-position#:shader-expression-uniformity#:shader-expression-workgroup-uniform-p#:define-shader#:define-live-shader#:define-shader-method#:shader-specification-for#:shader-definition-dependent#:make-shader-definition-dependent#:shader-definition-dependent-arguments#:shader-definition-change-pending-p#:shader-definition-change-snapshot#:acknowledge-shader-definition-change#:release-shader-definition-dependent#:parse-shader-specification#:lower-shader-specification
The language is a compiled Common Lisp subset. Operators that Common Lisp already names deliberately retain those symbols.